??xml version="1.0" encoding="utf-8" standalone="yes"?>一区二区三区四区国产,青青久久av北条麻妃海外网,国外男同性恋在线看http://www.aygfsteel.com/liuzheng/category/27327.htmlzh-cnWed, 09 Jan 2008 01:31:10 GMTWed, 09 Jan 2008 01:31:10 GMT60XML 中CDATA的意?/title><link>http://www.aygfsteel.com/liuzheng/articles/173635.html</link><dc:creator>刘铮 </dc:creator><author>刘铮 </author><pubDate>Tue, 08 Jan 2008 06:49:00 GMT</pubDate><guid>http://www.aygfsteel.com/liuzheng/articles/173635.html</guid><wfw:comment>http://www.aygfsteel.com/liuzheng/comments/173635.html</wfw:comment><comments>http://www.aygfsteel.com/liuzheng/articles/173635.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/liuzheng/comments/commentRss/173635.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/liuzheng/services/trackbacks/173635.html</trackback:ping><description><![CDATA[<h2>解析数据</h2> <p><strong>XML 解析器通常情况下会(x)处理XML文档中的所有文本?/strong></p> <p>当XML元素被解析的时候,XML元素内部的文本也?x)被解?</p> <table class="ex" cellspacing="0" width="100%" border="1"> <tbody> <tr> <td> <pre><message>This text is also parsed</message></pre> </td> </tr> </tbody> </table> <p>XML解析器这样做的原因是XML元素内部可能q包含了(jin)别的元素Q象下面的例子,name元素内部包含?jin)first和last两个元素:</p> <table class="ex" cellspacing="0" width="100%" border="1"> <tbody> <tr> <td> <pre><name><first>Bill</first><last>Gates</last></name></pre> </td> </tr> </tbody> </table> <p>解析器会(x)认ؓ(f)上面的代码是q样?</p> <table class="ex" cellspacing="0" width="100%" border="1"> <tbody> <tr> <td> <pre><name> <first>Bill</first> <last>Gates</last> </name></pre> </td> </tr> </tbody> </table> <br /> <hr /> <h2>转义字符</h2> <p><strong>不合法的XML字符必须被替换ؓ(f)相应的实体?</strong></p> <p>如果在XML文档中用类?<font color="#ff0000"><</font>" 的字W? 那么解析器将?x)出现错误,因?f)解析器会(x)认ؓ(f)q是一个新元素的开始。所以不应该象下面那样书写代?</p> <table class="ex" cellspacing="0" width="100%" border="1"> <tbody> <tr> <td> <pre><message>if salary < 1000 then</message></pre> </td> </tr> </tbody> </table> <p>Z(jin)避免出现q种情况Q必d字符"<" 转换成实体,象下面这?</p> <table class="ex" cellspacing="0" width="100%" border="1"> <tbody> <tr> <td> <pre><message>if salary <font color="#ff0000">&lt;</font> 1000 then</message></pre> </td> </tr> </tbody> </table> <p>下面是五个在XML文档中预定义好的实体:</p> <table class="ex" cellspacing="0" width="50%" border="1"> <tbody> <tr> <td width="39%">&lt;</td> <td width="17%"><</td> <td width="44%">于?/td> </tr> <tr> <td>&gt;</td> <td>></td> <td>大于?/td> </tr> <tr> <td>&amp;</td> <td>&</td> <td>?/td> </tr> <tr> <td>&apos;</td> <td>'</td> <td>单引?/td> </tr> <tr> <td>&quot;</td> <td>"</td> <td>双引?/td> </tr> </tbody> </table> <br /> 实体必须以符?&"开_(d)以符?;"l尾<strong>?/strong> <p><strong>注意:</strong> 只有"<" 字符?&"字符对于XML来说是严格禁止用的。剩下的都是合法的,Z(jin)减少出错Q用实体是一个好?fn)惯?/p> <hr /> <h2>CDATA部g</h2> <p><strong>在CDATA内部的所有内定w?x)被解析器忽略?/strong></p> <p>如果文本包含?jin)很多?<"字符?&"字符——就象程序代码一P那么最好把他们都放到CDATA部g中?/p> <p>一?CDATA 部g?<strong><font color="#ff0000"><![CDATA[</font></strong>" 标记开始,?<strong><font color="#ff0000">]]></font></strong>"标记l束:</p> <table class="ex" cellspacing="0" width="100%" border="1"> <tbody> <tr> <td> <pre><script> <font color="#0000ff"><![CDATA[</font> function matchwo(a,b) { if (a < b && a < 0) then { return 1 } else { return 0 } } <font color="#0000ff">]]></font> </script></pre> </td> </tr> </tbody> </table> <p>在前面的例子中,所有在CDATA部g之间的文本都?x)被解析器忽略?/p> <h3>CDATA注意事项:</h3> <p>CDATA部g之间不能再包含CDATA部gQ不能嵌套)(j)。如果CDATA部g包含?jin)字W?<font color="#ff0000">]]></font>" 或?<font color="#ff0000"><![CDATA[</font>" Q将很有可能出错哦?/p> <p>同样要注意在字符?<font color="#ff0000">]]></font>"之间没有I格或者换行符?/p> <img src ="http://www.aygfsteel.com/liuzheng/aggbug/173635.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/liuzheng/" target="_blank">刘铮 </a> 2008-01-08 14:49 <a href="http://www.aygfsteel.com/liuzheng/articles/173635.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>XML schema ?elementFormDefault 的意?/title><link>http://www.aygfsteel.com/liuzheng/articles/170916.html</link><dc:creator>刘铮 </dc:creator><author>刘铮 </author><pubDate>Thu, 27 Dec 2007 08:29:00 GMT</pubDate><guid>http://www.aygfsteel.com/liuzheng/articles/170916.html</guid><wfw:comment>http://www.aygfsteel.com/liuzheng/comments/170916.html</wfw:comment><comments>http://www.aygfsteel.com/liuzheng/articles/170916.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/liuzheng/comments/commentRss/170916.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/liuzheng/services/trackbacks/170916.html</trackback:ping><description><![CDATA[一?nbsp;XML schema ?nbsp;elementFormDefault="Q? q一属性用来指C?nbsp;XML Schema 处理E序把这?nbsp;XML schema 中定义的元素或者类型放到哪个命名空间? <p> </p> <p>一个schema中声明的元素或者类型只能归C个命名空间中的某一个去Q这两个是,无名命名I间和由targetSchema属性指明的目标命名I间。而targetSchema属性只能在xsQschema的定义中声明Q因而,一个schema中的定义的元素或cd只可能归属于一个有名命名空_(d)但是q有可能归属于无名命名空_(d)(j)?/p> <p>当elementFormDefault="qualified" Ӟ所有全局元素的子元素被以缺省方式放到目标命名空_(d)但是全局元素或者类型将被放到目标命名空_(d)而当elementFormDefault="unqualified" Ӟ所有全局元素的子元素被以缺省方式放到无名命名空间。而属性的命名I间cM地由attributeFormDefault="Q?来指明?/p> <p>需要明白的是,elementFormDefault="Q? 是有作用域的Qƈ且是被承的Q除非在子定义中覆盖父定义?/p> <p>下面三个例子说明?jin)elementFormDefault的用效果。红色表C属于已命名I间的元素,蓝色表示属于未命名空间的元素?/p> <p>1.定义?jin)目标命名空_(d) 全局elementFormDefault=“unqualified”。这旉?jin)全局元素或者类型将归于目标命名I间外,局部元素将归于无名命名I间?/p> <p><u>unqualified.xsd</u></p> <p><?xml version="1.0" encoding="UTF-8"?><br /> <xs:schema xmlns:xs="<a class="contentlink" target="_blank" href_cetemp='http://www.w3.org/2001/XMLSchema"'>http://www.w3.org/2001/XMLSchema"</a> <font color="red">targetNamespace="aaaa" elementFormDefault="unqualified"</font> attributeFormDefault="unqualified"><br />  <xs:element name="c"><br />   <xs:complexType><br />    <xs:sequence><br />     <xs:element name="c1" type="xs:double"/><br />     <xs:element name="c2" type="xs:string"/><br />    </xs:sequence><br />   </xs:complexType><br />  </xs:element><br /> </xs:schema></p> <p><u>unqualified.xml</u></p> <p><?xml version="1.0" encoding="UTF-8"?><br /> <font color="red"><n:c xmlns:n="aaaa"</font> xmlns:xsi="<a class="contentlink" target="_blank" href_cetemp='http://www.w3.org/2001/XMLSchema-instance"'>http://www.w3.org/2001/XMLSchema-instance"</a> xsi:schemaLocation="aaaa unqualified.xsd"><br />  <font color="blue"><c1></font>3.141593E0<font color="blue"></c1></font><br />  <font color="blue"><c2></font>String<font color="blue"></c2></font><br /> <font color="red"></n:c></font></p> <p>2. 定义?jin)目标命名空_(d) 全局elementFormDefault=“qualified”。这时全局元素或者类型将归于目标命名I间Q局部元素将以缺省方式归于目标命名空间?/p> <p><u>qualified.xsd</u></p> <p><?xml version="1.0" encoding="UTF-8"?><br /> <xs:schema xmlns:xs="<a class="contentlink" target="_blank" href_cetemp='http://www.w3.org/2001/XMLSchema"'>http://www.w3.org/2001/XMLSchema"</a> <font color="red">targetNamespace="aaaa" elementFormDefault="qualified"</font> attributeFormDefault="unqualified"><br />  <xs:element name="c"><br />   <xs:complexType><br />    <xs:sequence><br />     <xs:element name="c1" type="xs:double"/><br />     <xs:element name="c2" type="xs:string"/><br />    </xs:sequence><br />   </xs:complexType><br />  </xs:element><br /> </xs:schema></p> <p><u>qualified.xml</u></p> <p><?xml version="1.0" encoding="UTF-8"?><br /> <font color="red"><c xmlns="aaaa"</font> xmlns:xsi="<a class="contentlink" target="_blank" href_cetemp='http://www.w3.org/2001/XMLSchema-instance"'>http://www.w3.org/2001/XMLSchema-instance"</a> xsi:schemaLocation="aaaa qualified.xsd"><br />  <font color="red"><c1></font>3.141593E0<font color="red"></c1></font><br />  <font color="red"><c2></font>String<font color="red"></c2></font><br /> <font color="red"></c></font></p> <p>3. 定义?jin)目标命名空_(d) 全局elementFormDefault=“unqualified”。这时全局元素QcQ或者类型将归于目标命名I间。局部元素(c1Qc2Q以~省方式归于无名命名I间。局部元素(c3Q在局部定义中使用form=“qualified”覆盖全局讑֮的unqualifiedQ这使得c3归于目标命名I间Q如果它有子元素Q子元素以~省方式归于目标命名I间Q?/p> <p><u>qualified2.xsd</u></p> <p><?xml version="1.0" encoding="UTF-8"?><br /> <xs:schema xmlns:xs="<a class="contentlink" target="_blank" href_cetemp='http://www.w3.org/2001/XMLSchema"'>http://www.w3.org/2001/XMLSchema"</a> <font color="red">targetNamespace="aaaa" elementFormDefault="unqualified"</font> attributeFormDefault="unqualified"><br />  <xs:element name="c"><br />   <xs:complexType><br />    <xs:sequence><br />     <xs:element name="c1" type="xs:double"/><br />     <xs:element name="c2" type="xs:string"/><br />     <xs:element name="c3" type="xs:integer" <font color="red">form="qualified"</font>/><br />    </xs:sequence><br />   </xs:complexType><br />  </xs:element><br /> </xs:schema></p> <p><br /> <u>qualified2.xml</u></p> <p><?xml version="1.0" encoding="UTF-8"?><br /> <font color="red"><n:c xmlns:n="aaaa"</font> xmlns:xsi="<a class="contentlink" target="_blank" href_cetemp='http://www.w3.org/2001/XMLSchema-instance"'>http://www.w3.org/2001/XMLSchema-instance"</a> xsi:schemaLocation="aaaa qualified2.xsd"><br />  <font color="blue"><c1></font>3.141593E0<font color="blue"></c1></font><br />  <font color="blue"><c2></font>String<font color="blue"></c2></font><br />  <font color="red"><n:c3></font>0<font color="red"></n:c3></font><br /> <font color="red"></n:c></font></p> <img src ="http://www.aygfsteel.com/liuzheng/aggbug/170916.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/liuzheng/" target="_blank">刘铮 </a> 2007-12-27 16:29 <a href="http://www.aygfsteel.com/liuzheng/articles/170916.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WSDL for samplehttp://www.aygfsteel.com/liuzheng/articles/167163.html刘铮 刘铮 Wed, 12 Dec 2007 02:47:00 GMThttp://www.aygfsteel.com/liuzheng/articles/167163.htmlhttp://www.aygfsteel.com/liuzheng/comments/167163.htmlhttp://www.aygfsteel.com/liuzheng/articles/167163.html#Feedback0http://www.aygfsteel.com/liuzheng/comments/commentRss/167163.htmlhttp://www.aygfsteel.com/liuzheng/services/trackbacks/167163.htmlWSDL Example

This is a simplified fraction of a WSDL document:

<message name="getTermRequest">
<part name="term" type="xs:string"/>
</message>

<message name="getTermResponse">
<part name="value" type="xs:string"/>
</message>
<portType name="glossaryTerms">
<operation name="getTerm">
<input message="getTermRequest"/>
<output message="getTermResponse"/>
</operation>
</portType>

In this example the <portType> element defines "glossaryTerms" as the name of a port, and "getTerm" as the name of an operation.

The "getTerm" operation has an input message called "getTermRequest" and an output message called "getTermResponse".

The <message> elements define the parts of each message and the associated data types.

Compared to traditional programming, glossaryTerms is a function library, "getTerm" is a function with "getTermRequest" as the input parameter and getTermResponse as the return parameter.



刘铮 2007-12-12 10:47 发表评论
]]>
使用stax解析xmlhttp://www.aygfsteel.com/liuzheng/articles/165121.html刘铮 刘铮 Tue, 04 Dec 2007 03:43:00 GMThttp://www.aygfsteel.com/liuzheng/articles/165121.htmlhttp://www.aygfsteel.com/liuzheng/comments/165121.htmlhttp://www.aygfsteel.com/liuzheng/articles/165121.html#Feedback0http://www.aygfsteel.com/liuzheng/comments/commentRss/165121.htmlhttp://www.aygfsteel.com/liuzheng/services/trackbacks/165121.htmlStAX 框架QStreaming API for XMLQ?/span>

SAX 框架的缺Ҏ(gu)不能记录正在处理元素的上下文。但是优Ҏ(gu)q行时占内存I间比较?yu),效率高。DOM 框架׃在处?XML 旉要ؓ(f)其构造一|(wi)Q所以特Ҏ(gu)好相反。StAX 框架出现?Java SE 6 中,它的设计目标是要结?SAX 框架?DOM 框架的优炏V既要求q行时效率,也要求保持元素的上下文状态?a >清单 5 是一D?StAX 框架处理 XML 文g的代码?/p>
清单 5. 使用 StAX 框架处理 XML 文g
            import java.io.*;
            import javax.xml.stream.*;
            import javax.xml.stream.events.*;
            public class StAXTest {
            public static void main(String[] args) {
            XMLInputFactory inputFactory = XMLInputFactory.newInstance();
            InputStream input = new ByteArrayInputStream(
            ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
            "<work-contact-info>" +
            "<Location>Shanghai-shuion-333</Location>" +
            "<Postal>200020</Postal>" +
            "<Tel><fix>63262299</fix><mobile>1581344454</mobile></Tel>" +
            "<Appellation>Mr. Wang</Appellation>" +
            "</work-contact-info>").getBytes());
            try {
            XMLEventReader xmlEventReader = inputFactory.createXMLEventReader(input);
            while (xmlEventReader.hasNext()) {
            XMLEvent event = xmlEventReader.nextEvent();
            if (event.isStartElement()) {
            StartElement startElement = event.asStartElement();
            System.out.println(startElement.getName().toString());
            }
            if (event.isCharacters()) {
            Characters text = event.asCharacters();
            if (!text.isWhiteSpace()) {
            System.out.println("\t" + text.getData());
            }
            }
            }
            } catch (XMLStreamException e) {
            e.printStackTrace();
            }
            }
            }
            

观察后可以发?StAX 框架?SAX 框架h怼的地斏VStAX ?Event.isStartElement Ҏ(gu)QSAX ?DefaultHandler.startElement Ҏ(gu)。StAX ?Event.isCharacter Ҏ(gu)QSAX ?DefaultHandler.character Ҏ(gu)。实际上q两个框架处?XML 文g的时候用了(jin)怼的模型——将 XML 文g作ؓ(f)元素l成的流Q而不同于 DOM 的树(wi)模型。解?XML 文gӞ应用E序调用 XMLEventReader ?nextEvent Ҏ(gu)解析下一个元素(或者是解析同一个元素,Ҏ(gu)解析的不同阶D,产生不同元素Q,StAX ׃(x)通过 XMLEventReader 产生一个事件。比如针对同一个元素,可能?x)?StartElement ?EndElement 事g。Ş象的?XMLEventReader 像是一根子,拽一下,解析一个元素,产生一个事件。于是这U技术也被称?#8221;Pull Parser”技术。StAX 在处?XML 文gӞ产生的所有事件是通过一?IteratorQ?code>XMLEventReader l承?IteratorQ返回的。应用程序通过q个 Iterator 能知道某个解析事件的前后分别是什么。这cM息就是一个元素的上下文信息?/p>

刘铮 2007-12-04 11:43 发表评论
]]>
学习(fn)xml?j)?/title><link>http://www.aygfsteel.com/liuzheng/articles/160999.html</link><dc:creator>刘铮 </dc:creator><author>刘铮 </author><pubDate>Fri, 16 Nov 2007 05:57:00 GMT</pubDate><guid>http://www.aygfsteel.com/liuzheng/articles/160999.html</guid><wfw:comment>http://www.aygfsteel.com/liuzheng/comments/160999.html</wfw:comment><comments>http://www.aygfsteel.com/liuzheng/articles/160999.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/liuzheng/comments/commentRss/160999.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/liuzheng/services/trackbacks/160999.html</trackback:ping><description><![CDATA[xml中只能有一个根节点<br /> <br /> xml中dtd的定?br /> <pre><!-- address.dtd --><br /> <!ELEMENT address (name, street, city, state, postal-code)><br /> <!ELEMENT name (title? first-name, last-name)><br /> <!ELEMENT title (#PCDATA)><br /> <!ELEMENT first-name (#PCDATA)><br /> <!ELEMENT last-name (#PCDATA)><br /> <!ELEMENT street (#PCDATA)><br /> <!ELEMENT city (#PCDATA)><br /> <!ELEMENT state (#PCDATA)><br /> <!ELEMENT postal-code (#PCDATA)></pre> 其中<br /> <pre>#PCDATA</pre> <code>#PCDATA</code> stands for parsed character data; you can't include another element in these elements.<br /> <br /> 定义attribute<br /> <pre><!ELEMENT city (#PCDATA)><br /> <!ATTLIST city state CDATA #REQUIRED<br /> postal-code CDATA #REQUIRED><br /> <br /> <a name="schemasample">A sample XML schema<br /> <br /> <?xml version="1.0" encoding="UTF-8"?><br /> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"><br /> <xsd:element name="address"><br /> <xsd:complexType><br /> <xsd:sequence><br /> <xsd:element ref="name"/><br /> <xsd:element ref="street"/><br /> <xsd:element ref="city"/><br /> <xsd:element ref="state"/><br /> <xsd:element ref="postal-code"/><br /> </xsd:sequence><br /> </xsd:complexType><br /> </xsd:element><br /> <br /> <xsd:element name="name"><br /> <xsd:complexType><br /> <xsd:sequence><br /> <xsd:element ref="title" minOccurs="0"/><br /> <xsd:element ref="first-Name"/><br /> <xsd:element ref="last-Name"/><br /> </xsd:sequence><br /> </xsd:complexType><br /> </xsd:element><br /> <br /> <xsd:element name="title" type="xsd:string"/><br /> <xsd:element name="first-Name" type="xsd:string"/><br /> <xsd:element name="last-Name" type="xsd:string"/><br /> <xsd:element name="street" type="xsd:string"/><br /> <xsd:element name="city" type="xsd:string"/><br /> <br /> <xsd:element name="state"><br /> <xsd:simpleType><br /> <xsd:restriction base="xsd:string"><br /> <xsd:length value="2"/><br /> </xsd:restriction><br /> </xsd:simpleType><br /> </xsd:element><br /> <br /> <xsd:element name="postal-code"><br /> <xsd:simpleType><br /> <xsd:restriction base="xsd:string"><br /> <xsd:pattern value="[0-9]{5}(-[0-9]{4})?"/><br /> </xsd:restriction><br /> </xsd:simpleType><br /> </xsd:element><br /> </xsd:schema><br /> </a></pre> <br /> <img src ="http://www.aygfsteel.com/liuzheng/aggbug/160999.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/liuzheng/" target="_blank">刘铮 </a> 2007-11-16 13:57 <a href="http://www.aygfsteel.com/liuzheng/articles/160999.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>解析xml时对DOM和SAX的选择http://www.aygfsteel.com/liuzheng/articles/160798.html刘铮 刘铮 Thu, 15 Nov 2007 09:29:00 GMThttp://www.aygfsteel.com/liuzheng/articles/160798.htmlhttp://www.aygfsteel.com/liuzheng/comments/160798.htmlhttp://www.aygfsteel.com/liuzheng/articles/160798.html#Feedback0http://www.aygfsteel.com/liuzheng/comments/commentRss/160798.htmlhttp://www.aygfsteel.com/liuzheng/services/trackbacks/160798.html

选择 DOM q是选择 SAXQ这取决于下面几个因素:(x)

  • 应用E序的目的:(x)如果打算Ҏ(gu)据作出更改ƈ它输出?XMLQ那么在大多数情况下QDOM 是适当的选择。ƈ不是说?SAX ׃能更Ҏ(gu)据,但是该过E要复杂得多Q因为?zhn)必须?gu)据的一份拷贝而不是对数据本n作出更改?/li>
  • 数据定wQ?/strong> 对于大型文gQSAX 是更好的选择?/li>
  • 数据如何用:(x)如果只有数据中的量部分?x)被使用Q那么?SAX 来将该部分数据提取到应用E序中可能更好?另一斚wQ如果?zhn)知道自己以后会(x)回头引用已处理q的大量信息Q那?SAX 也许不是恰当的选择?/li>
  • 寚w度的需要:(x) SAX 实现通常要比 DOM 实现更快?/li>

SAX ?DOM 不是怺排斥的,Cq点很重要。?zhn)可以使?DOM 来创?SAX 事g,也可以?SAX 来创?DOM ?wi)。事实上Q用于创?DOM ?wi)的大多数解析器实际上都使?SAX 来完成这个Q务!



刘铮 2007-11-15 17:29 发表评论
]]>
学习(fn)sax解析xml?j)?/title><link>http://www.aygfsteel.com/liuzheng/articles/160797.html</link><dc:creator>刘铮 </dc:creator><author>刘铮 </author><pubDate>Thu, 15 Nov 2007 09:27:00 GMT</pubDate><guid>http://www.aygfsteel.com/liuzheng/articles/160797.html</guid><wfw:comment>http://www.aygfsteel.com/liuzheng/comments/160797.html</wfw:comment><comments>http://www.aygfsteel.com/liuzheng/articles/160797.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/liuzheng/comments/commentRss/160797.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/liuzheng/services/trackbacks/160797.html</trackback:ping><description><![CDATA[可以使用SAXParser的parseҎ(gu)q行解析Q也可以使用XmlReader的parseҎ(gu)q行解析Q但是最好是使用XmlReaderQ因为XmlReader是接口?br /> 基本的初始化Ҏ(gu)如下Q?br /> File f=new File("d:"+File.separator+"e.xml");<br />         InputSource ip=new InputSource(new FileInputStream(f));<br />         try {<br />             SAXParser  s=SAXParserFactory.newInstance().newSAXParser();<br />             XMLReader xmlReader=s.getXMLReader();<br />             xmlReader.setContentHandler(new MyHandler());<br />             xmlReader.parse(ip);<br />             <br />         } catch (ParserConfigurationException e) {<br />             e.printStackTrace();<br />         } catch (SAXException e) {<br />             e.printStackTrace();<br />         }<br /> <br /> 其中MyHandlercȝ承了(jin)DefaultHandlerQ可以overwrite其中的方法,使其满需求?br /> 例子Q?br /> <br /> public void startElement(String uri, String localName, String name,<br />                 Attributes attributes) throws SAXException {<br /> <br />             if (logger.isInfoEnabled()) {<br />                 logger<br />                         .info("startElement(String, String, String, Attributes) - uri="<br />                                 + uri<br />                                 + ", localName="<br />                                 + localName<br />                                 + ", name="<br />                                 + name );<br />             }<br /> <br />             for (int i = 0; i < attributes.getLength(); i++) {<br />                 if (logger.isInfoEnabled()) {<br />                     logger.info("endElement(String, String, String) - uri=" + uri<br />                             + ", localName=" + localName + ", qName=" + attributes.getQName(i)+ ", attributes=" + attributes.getValue(i));<br />                 }<br />             }<br />             <br /> <br />             super.startElement(uri, localName, name, attributes);<br />         }<br /> <span style="color: red;">//对text node的处?/span><br /> public void characters(char[] ch, int start, int length)<br />                 throws SAXException {<br />             if (logger.isInfoEnabled()) {<br />                 logger.info("characters(char[], int, int) - ch="+ new String(ch,start,length));<span style="color: red;">//q里q样子写才能得到text node 真正?span style="color: red;"><span style="color: red;">倹{?/span><font face="Verdana, Arial, Helvetica" size="2"><strong>范围Q?/strong> <code>characters()</code> 事g不仅包括不仅一个字W串。它q包括v始和长度信息。实际上Q?code>ch</code> 字符数组包括整个文档。应用程序一定不能尝试读取馈送给 <code>characters()</code> 事g的范围之外的字符?/font></span></span><font face="Verdana, Arial, Helvetica" size="2"></font><br />             }<br /> <br />             super.characters(ch, start, length);<br />         }<br /> <br /> <br /> <img src ="http://www.aygfsteel.com/liuzheng/aggbug/160797.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/liuzheng/" target="_blank">刘铮 </a> 2007-11-15 17:27 <a href="http://www.aygfsteel.com/liuzheng/articles/160797.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>XPath单语?/title><link>http://www.aygfsteel.com/liuzheng/articles/160562.html</link><dc:creator>刘铮 </dc:creator><author>刘铮 </author><pubDate>Wed, 14 Nov 2007 07:24:00 GMT</pubDate><guid>http://www.aygfsteel.com/liuzheng/articles/160562.html</guid><wfw:comment>http://www.aygfsteel.com/liuzheng/comments/160562.html</wfw:comment><comments>http://www.aygfsteel.com/liuzheng/articles/160562.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/liuzheng/comments/commentRss/160562.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/liuzheng/services/trackbacks/160562.html</trackback:ping><description><![CDATA[<h2> <a id="AjaxHolder_ctl01_TitleUrl" >XPath 单语?/a> </h2>   <p>XPath 是XML的查询语aQ和SQL的角色很cM。以下面XMLZQ介lXPath 的语法?/p> <pre> </pre> <pre><?xml version="1.0" encoding="ISO-8859-1"?></pre> <pre><catalog></pre> <pre> <cd country="USA"></pre> <pre>    <title>Empire Burlesque</title></pre> <pre>    <artist>Bob Dylan</artist></pre> <pre>    <price>10.90</price></pre> <pre> </cd></pre> <pre> <cd country="UK"></pre> <pre>    <title>Hide your heart</title></pre> <pre>    <artist>Bonnie Tyler</artist></pre> <pre>    <price>9.90</price></pre> <pre> </cd></pre> <pre> <cd country="USA"></pre> <pre>    <title>Greatest Hits</title> </pre> <pre>    <artist>Dolly Parton</artist> </pre> <pre>    <price>9.90</price> </pre> <pre>  </cd></pre> <pre></catalog></pre> <pre> </pre> <pre>         </pre> <p><strong>定位节点</strong> <br /> XML是树(wi)状结构,cM档案pȝ内数据夹的结构,XPath也类似档案系l的路径命名方式。不qXPath 是一U模?Pattern)Q可以选出 XML档案中,路径W合某个模式的所有节点出来。例如要选catalog底下的cd中所有price元素可以用:(x)</p> <pre> </pre> <pre>/catalog/cd/price     </pre> <pre> </pre> <p>如果XPath的开头是一个斜U(/Q代表这是绝对\径。如果开头是两个斜线Q?/Q表C文件中所有符合模式的元素都会(x)被选出来,即是处于树(wi)中不同的层也会(x)被选出来。以下的语法?x)选出文g中所有叫做cd的元素(在树(wi)中的M层都会(x)被选出来)(j)Q?/p> <pre> </pre> <pre>//cd</pre> <pre> </pre> <p><strong>选择未知的元?/strong> <br /> 使用星号QWildcards,Q)(j)可以选择未知的元素。下面这个语法会(x)选出/catalog/cd 的所有子元素Q?/p> <pre> </pre> <pre>/catalog/cd/*</pre> <pre> </pre> <p>以下的语法会(x)选出所有catalog的子元素中,包含有price作ؓ(f)子元素的元素?/p> <pre> </pre> <pre>/catalog/*/price</pre> <pre> </pre> <p>以下的语法会(x)选出有两层父节点Q叫做price的所有元素?/p> <pre> </pre> <pre>/*/*/price</pre> <pre> </pre> <p>以下的语法会(x)选择出文件中的所有元素?/p> <pre> </pre> <pre>//*</pre> <pre> </pre> <p>要注意的是,惌存取不分层的元素,XPath语法必须以两个斜U开?//)Q想要存取未知元素才用星?*)Q星号只能代表未知名U的元素Q不能代表未知层U的元素?/p> <p><strong>选择分支</strong> <br /> 使用中括号可以选择分支。以下的语法从catalog的子元素中取出第一个叫做cd的元素。XPath的定义中没有W?元素q种东西?/p> <pre> </pre> <pre>/catalog/cd[1]</pre> <pre> </pre> <p>以下语法选择catalog中的最后一个cd元素Q(XPathjq没有定?first() q种函式喔,用上例的 [1]可以取出第一个元素?/p> <pre> </pre> <pre>/catalog/cd[last()]</pre> <pre> </pre> <p>以下语法选出含有price子元素的所?catalog/cd元素?/p> <pre> </pre> <pre>/catalog/cd[price]</pre> <pre> </pre> <p>以下语法选出price元素的值等?0.90的所?catalog/cd元素</p> <pre> </pre> <pre>/catalog/cd[price=10.90]</pre> <pre> </pre> <p>以下语法选出price元素的值等?0.90的所?catalog/cd元素的price元素</p> <pre> </pre> <pre>/catalog/cd[price=10.90]/price</pre> <pre> </pre> <p><strong>选择一个以上的路径</strong> <br /> 使用Or操作?|)可以选择一个以上的路径。例如:(x)</p> <pre> </pre> <pre>/catalog/cd/title | catalog/cd/artist</pre> <pre> </pre> <p>选择所有title以及(qing)artist元素</p> <pre> </pre> <pre>//title | //artist</pre> <pre> </pre> <p>选择所有title以及(qing)artist以及(qing)price元素</p> <pre> </pre> <pre>//title | //artist | //price</pre> <pre> </pre> <p><strong>选择属?/strong> <br /> 在XPath中,除了(jin)选择元素以外Q也可以选择属性。属性都是以@开头。例如选择文g中所有叫做country的属性:(x)</p> <pre> </pre> <pre>//@country</pre> <pre>         </pre> <p>选择所有含有countryq个属性的cd元素Q?/p> <pre> </pre> <pre>//cd[@country]</pre> <pre>         </pre> <p>以下语法选择出含有属性的所有cd元素</p> <pre> </pre> <pre>//cd[@*]</pre> <pre>         </pre> <p>以下语法选择出country属性gؓ(f)UK的cd元素</p> <pre> </pre> <pre>//cd[@country='UK']</pre> <img src ="http://www.aygfsteel.com/liuzheng/aggbug/160562.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/liuzheng/" target="_blank">刘铮 </a> 2007-11-14 15:24 <a href="http://www.aygfsteel.com/liuzheng/articles/160562.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ԭ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank">Ƹ</a>| <a href="http://" target="_blank">ٳ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ľ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">̫</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">˼</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">п</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ͨ</a>| <a href="http://" target="_blank">ֲ</a>| <a href="http://" target="_blank">Ͷ</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank">̳</a>| <a href="http://" target="_blank">˳</a>| <a href="http://" target="_blank">բ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ຣʡ</a>| <a href="http://" target="_blank">Ҵ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">㽭ʡ</a>| <a href="http://" target="_blank">Ӷ</a>| <a href="http://" target="_blank">Ӳ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>