⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 getdecentity.htm

📁 这个压缩包里的都是超级经典的java例子
💻 HTM
字号:
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>Getting the Declared Entities in a DOM Document (Java Developers Almanac Example)
</TITLE>
<META CONTENT="Patrick Chan" NAME="AUTHOR">
<META CONTENT="Code Examples from The Java Developers Almanac 1.4" NAME="DESCRIPTION">
<META CONTENT="Addison-Wesley/Patrick Chan" NAME="OWNER">
<META CONTENT="3/20/02" NAME="revision">
<META CONTENT="no-cache" HTTP-EQUIV="Pragma">
<LINK href="/almanac.css" media="screen" type="text/css" rel="stylesheet">
</HEAD>
<BODY>
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0">
<TR>
<TD></TD>
</TR>
</TABLE>
<br>
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0">
<TR>
<TD></TD>
</TR>
<TR>
<TD rowspan="3"><A HREF="/?l=ex"><IMG BORDER="0" ALIGN="BOTTOM" HSPACE="10" SRC="/egs/almanac14a.jpg"></A></TD><TD VALIGN="top">
<h1>The Java Developers Almanac 1.4</h1>
<br>
        Order this book from <a href="/cgi-bin/scripts/redirect.pl?l=ex&url=http://www.amazon.com/exec/obidos/ASIN/0201752808/xeo">Amazon</a>.
    </TD>
</TR>
<TR>
<TD align="right" valign="bottom">
<FORM method="get" action="/cgi-bin/search/find.pl">
<INPUT size="25" name="words" type="text"><INPUT value="Search" type="submit">
</FORM>
</TD>
</TR>
</TABLE>
<HR color="#6666cc">
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0">
<TR>
<TD valign="top"><script type="text/javascript">
<!--
google_ad_client = "pub-6001183370374757";
google_ad_width = 120;
google_ad_height = 600;
google_ad_format = "120x600_as";
google_ad_channel = "4777242811";
google_ad_type = "text_image";
google_color_border = "FFFFFF";
google_color_bg = "FFFFFF";
google_color_link = "6666CC";
google_color_url = "6666CC";
google_color_text = "000000";
//--></script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script></TD><TD>&nbsp;&nbsp;&nbsp;</TD><TD valign="top">
<DIV ALIGN="LEFT">
<A HREF="/">Home</A>
    &gt;
    <A HREF="../index.html">List of Packages</A>
    &gt;

    
    <A HREF="../org.w3c.dom/pkg.html">org.w3c.dom</A><font color="#666666" class="xsmall-font">
        &nbsp;[30 examples]
    </font>
        &gt;
        <B><A HREF="../org.w3c.dom/pkg.html#Getting Nodes">Getting Nodes</A></B><font color="#666666" class="xsmall-font">
            &nbsp;[5 examples]
            </font>
</DIV><P>
  <h3>e529. Getting the Declared Entities in a DOM Document</h3>

The entities declared in the DTD of an XML document are available in
the DOM document. Unfortunately, with J2SE 1.4's default parser, only
the names, not the values, are available. In order to obtain the
values, you must parse the file without expanding entity references
and then scan the DOM document for the unexpanded entity
references. The unexpanded entity references contain the values.

<P> Note: By default, a parser expands entity references while
constructing the DOM tree. See <a href="../javax.xml.parsers/ExpEntity.html" class="eglink"><b>e516</b> Preventing Expansion of Entity References While Parsing an XML File</a>
to prevent expansion. The default parser in J2SE 1.4
expands entity references in attribute values. There is no way to
prevent this.


<pre>    // Obtain a document; this method is implemented in
    // <a href="../javax.xml.parsers/ExpEntity.html" class="eglink"><b>e516</b> Preventing Expansion of Entity References While Parsing an XML File</a>
    Document doc = <font color="#0066ff"><i>parseXmlFileNoExpandER</i></font>(<font color="#0066ff"><i>"infilename.xml"</i></font>, <font color="#0066ff"><i>true</i></font>);
    
    // Scan the document for entity references and get their values.
    // The values are stored in the map using the entity name as the key.
    Map entityValues = new HashMap();
    getEntityValues(doc, entityValues);
    
    // Get list of declared entities
    NamedNodeMap entities = doc.getDoctype().getEntities();
    for (int i=0; i&lt;entities.getLength(); i++) {
        Entity entity = (Entity)entities.item(i);
        String entityName = entity.getNodeName();
        String entityPublicId = entity.getPublicId();
        String entitySystemId = entity.getSystemId();
    
        // Get the value of the entity, which is its set of child nodes
        Node entityValue = (Node)entityValues.get(entityName);
    }
    
    // This method walks the document looking for entity references.
    // When one is found, this method adds the entity reference node
    // to `map' using the name as the key.
    public static void getEntityValues(Node node, Map map) {
        if (node instanceof EntityReference) {
            map.put(node.getNodeName(), node);
        }
    
        // Visit the children
        NodeList list = node.getChildNodes();
        for (int i=0; i&lt;list.getLength(); i++) {
            getEntityValues(list.item(i), map);
        }
    }
</pre>
This is the sample input for the example:

<pre>    &lt;?xml version="1.0" encoding="UTF-8"?&gt;
    &lt;!DOCTYPE root [
        &lt;!ENTITY entity1 "an internal entity"&gt;
    
        &lt;!-- This is a parameter entity; it will not appear in the DOM document --&gt;
        &lt;!ENTITY % entity2 "a | b"&gt;
    
        &lt;!-- This is an external text entity --&gt;
        &lt;!ENTITY entity3 SYSTEM "External.xml"&gt;
    
        &lt;!-- This is an external parameter entity; it includes DTD from
             another file. It will not appear in the DOM document. However,
             any non-parameter entities declared in the file will be included. --&gt;
        &lt;!ENTITY % entity4 SYSTEM "More.dtd"&gt;
        %entity4;
    
        &lt;!-- entity5 is an unparsed entity; it can only appear as an attribute value --&gt;
        &lt;!ENTITY entity5 SYSTEM "pic.jpg" NDATA NOTA1&gt;
        &lt;!NOTATION NOTA1 SYSTEM "jpgviewer.exe"&gt;
        &lt;!ELEMENT elem2 EMPTY&gt;
        &lt;!ATTLIST elem2 attr ENTITY #REQUIRED&gt;
    ]&gt;
    &lt;root a="&amp;entity1;"&gt;
        &amp;entity1;
        &amp;entity3;
        &amp;ent1;
        &amp;ent2;
        &lt;elem2 attr="entity5"/&gt;
    &lt;/root&gt;
</pre>
External.xml:

<pre>    &lt;!-- a file with XML markup --&gt;
    &lt;i&gt;external&lt;/i&gt; text
</pre>
More.dtd:

<pre>    &lt;!-- a file with more DTD declarations --&gt;
    &lt;!ENTITY ent1 "xx"&gt;
    &lt;!ENTITY ent2 "yy"&gt;
    &lt;!ELEMENT elem1 (%entity2;)&gt;
</pre>
The following lists the entities that would appear in the DOM document.
Their values are also listed. Notice the parameter entities <code>entity2</code> and
<code>entity4</code> do not appear in the list.

<pre>    entity1=an internal entity
    entity3=&lt;i&gt;external&lt;/i&gt; text
    ent1=xx
    ent2=yy
    ent5=null
</pre>
If the input file were parsed with entity expansion, 
the resulting XML would be:

<pre>    &lt;?xml version="1.0" encoding="UTF-8"?&gt;
    &lt;root a="an internal entity"&gt;
        an internal entity
        &lt;!-- a file with XML markup --&gt;
    &lt;i&gt;external&lt;/i&gt; text
    
        xx
        yy
        &lt;elem2 attr="entity5"/&gt;
    &lt;/root&gt;
</pre>
Note: The J2SE 1.4 DOM writing routines don't appear to write
entity references properly. In particular, only text nodes
that are descendants of the entity reference 
are written; all other node types are simply not printed.

<P><table width="600" CELLSPACING="0" CELLPADDING="2" BORDER="0">
<tr>
<td bgcolor="#6666cc" align="center"><font color="#ffffff">
            &nbsp;<b>Related Examples</b></font></td>
</tr>
</table>


e1073. <a class="eglink" href="GetRoot.html?l=rel">
    Getting the Root Element in a DOM Document
</a>
<br>

e527. <a class="eglink" href="GetNode.html?l=rel">
    Getting a Node Relative to Another Node in a DOM Document
</a>
<br>

e528. <a class="eglink" href="GetNote.html?l=rel">
    Getting the Notations in a DOM Document
</a>
<br>

e530. <a class="eglink" href="GetEntityRef.html?l=rel">
    Getting the Value of an Entity Reference in a DOM Document
</a>
<br>


<table width="600" CELLSPACING="0" CELLPADDING="2" BORDER="0">
<tr>
<td align="left">
<br>
        See also: 
<a class="eglink" href="/egs/org.w3c.dom/pkg.html?l=rel#Adding%20and%20Removing%20Nodes">
    Adding and Removing Nodes
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/org.w3c.dom/pkg.html?l=rel#Element%20Attributes">
    Element Attributes
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/org.w3c.dom/pkg.html?l=rel#Elements">
    Elements
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/org.w3c.dom/pkg.html?l=rel#Text%20Nodes">
    Text Nodes
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/org.w3c.dom/pkg.html?l=rel#XPath">
    XPath
</a>&nbsp;&nbsp;

</td>
</tr>
</table>

<br>

<br>
<FONT class="xsmall-font">
&copy; 2002 Addison-Wesley.
</FONT></TD><TD>&nbsp;&nbsp;&nbsp;</TD><TD valign="top"><A href="http://compositesw.com/devzone?ref=javaalmanac"><IMG alt="Click Here" height="600" width="120" border="0" src="/csw_oad_120x600_final.gif"></A></TD>
</TR>
</TABLE>
</BODY>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<META CONTENT="NO-CACHE" HTTP-EQUIV="PRAGMA">
</HEAD>
</HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -