??xml version="1.0" encoding="utf-8" standalone="yes"?>97精品在线观看,美丽的姑娘在线观看免费动漫 ,国模 一区 二区 三区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 解析器通常情况下会处理XML文档中的所有文本?/strong></p> <p>当XML元素被解析的时候,XML元素内部的文本也会被解析:</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包含了别的元素Q象下面的例子,name元素内部包含了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>解析器会认ؓ上面的代码是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字符必须被替换ؓ相应的实体?</strong></p> <p>如果在XML文档中用类?<font color="#ff0000"><</font>" 的字W? 那么解析器将会出现错误,因ؓ解析器会认ؓ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避免出现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 /> 实体必须以符?&"开_以符?;"l尾<strong>?/strong> <p><strong>注意:</strong> 只有"<" 字符?&"字符对于XML来说是严格禁止用的。剩下的都是合法的,Z减少出错Q用实体是一个好习惯?/p> <hr /> <h2>CDATA部g</h2> <p><strong>在CDATA内部的所有内定w会被解析器忽略?/strong></p> <p>如果文本包含了很多的"<"字符?&"字符——就象程序代码一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之间的文本都会被解析器忽略?/p> <h3>CDATA注意事项:</h3> <p>CDATA部g之间不能再包含CDATA部gQ不能嵌套)。如果CDATA部g包含了字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只可能归属于一个有名命名空_但是q有可能归属于无名命名空_?/p> <p>当elementFormDefault="qualified" Ӟ所有全局元素的子元素被以缺省方式放到目标命名空_但是全局元素或者类型将被放到目标命名空_而当elementFormDefault="unqualified" Ӟ所有全局元素的子元素被以缺省方式放到无名命名空间。而属性的命名I间cM地由attributeFormDefault="Q?来指明?/p> <p>需要明白的是,elementFormDefault="Q? 是有作用域的Qƈ且是被承的Q除非在子定义中覆盖父定义?/p> <p>下面三个例子说明了elementFormDefault的用效果。红色表C属于已命名I间的元素,蓝色表示属于未命名空间的元素?/p> <p>1.定义了目标命名空_ 全局elementFormDefault=“unqualified”。这旉了全局元素或者类型将归于目标命名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. 定义了目标命名空_ 全局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. 定义了目标命名空_ 全局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 框架的缺Ҏ不能记录正在处理元素的上下文。但是优Ҏq行时占内存I间比较,效率高。DOM 框架׃在处?XML 旉要ؓ其构造一|Q所以特Ҏ好相反。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 ҎQSAX ?DefaultHandler.startElement Ҏ。StAX ?Event.isCharacter ҎQSAX ?DefaultHandler.character Ҏ。实际上q两个框架处?XML 文g的时候用了怼的模型——将 XML 文g作ؓ元素l成的流Q而不同于 DOM 的树模型。解?XML 文gӞ应用E序调用 XMLEventReader ?nextEvent Ҏ解析下一个元素(或者是解析同一个元素,Ҏ解析的不同阶D,产生不同元素Q,StAX ׃通过 XMLEventReader 产生一个事件。比如针对同一个元素,可能会?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 发表评论
]]>
学习xml心得http://www.aygfsteel.com/liuzheng/articles/160999.html刘铮 刘铮 Fri, 16 Nov 2007 05:57:00 GMThttp://www.aygfsteel.com/liuzheng/articles/160999.htmlhttp://www.aygfsteel.com/liuzheng/comments/160999.htmlhttp://www.aygfsteel.com/liuzheng/articles/160999.html#Feedback0http://www.aygfsteel.com/liuzheng/comments/commentRss/160999.htmlhttp://www.aygfsteel.com/liuzheng/services/trackbacks/160999.html
xml中dtd的定?br />
<!-- address.dtd -->
<!ELEMENT address (name, street, city, state, postal-code)>
<!ELEMENT name (title? first-name, last-name)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT first-name (#PCDATA)>
<!ELEMENT last-name (#PCDATA)>
<!ELEMENT street (#PCDATA)>
<!ELEMENT city (#PCDATA)>
<!ELEMENT state (#PCDATA)>
<!ELEMENT postal-code (#PCDATA)>
其中
#PCDATA
#PCDATA stands for parsed character data; you can't include another element in these elements.

定义attribute
<!ELEMENT city (#PCDATA)>
<!ATTLIST city state CDATA #REQUIRED
postal-code CDATA #REQUIRED>

A sample XML schema

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="address">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="name"/>
<xsd:element ref="street"/>
<xsd:element ref="city"/>
<xsd:element ref="state"/>
<xsd:element ref="postal-code"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>

<xsd:element name="name">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="title" minOccurs="0"/>
<xsd:element ref="first-Name"/>
<xsd:element ref="last-Name"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>

<xsd:element name="title" type="xsd:string"/>
<xsd:element name="first-Name" type="xsd:string"/>
<xsd:element name="last-Name" type="xsd:string"/>
<xsd:element name="street" type="xsd:string"/>
<xsd:element name="city" type="xsd:string"/>

<xsd:element name="state">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:length value="2"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>

<xsd:element name="postal-code">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="[0-9]{5}(-[0-9]{4})?"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:schema>



刘铮 2007-11-16 13:57 发表评论
]]>
解析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这取决于下面几个因素:

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

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



刘铮 2007-11-15 17:29 发表评论
]]>
学习sax解析xml心得http://www.aygfsteel.com/liuzheng/articles/160797.html刘铮 刘铮 Thu, 15 Nov 2007 09:27:00 GMThttp://www.aygfsteel.com/liuzheng/articles/160797.htmlhttp://www.aygfsteel.com/liuzheng/comments/160797.htmlhttp://www.aygfsteel.com/liuzheng/articles/160797.html#Feedback0http://www.aygfsteel.com/liuzheng/comments/commentRss/160797.htmlhttp://www.aygfsteel.com/liuzheng/services/trackbacks/160797.html 基本的初始化Ҏ如下Q?br /> File f=new File("d:"+File.separator+"e.xml");
        InputSource ip=new InputSource(new FileInputStream(f));
        try {
            SAXParser  s=SAXParserFactory.newInstance().newSAXParser();
            XMLReader xmlReader=s.getXMLReader();
            xmlReader.setContentHandler(new MyHandler());
            xmlReader.parse(ip);
            
        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        } catch (SAXException e) {
            e.printStackTrace();
        }

其中MyHandlercȝ承了DefaultHandlerQ可以overwrite其中的方法,使其满需求?br /> 例子Q?br />
public void startElement(String uri, String localName, String name,
                Attributes attributes) throws SAXException {

            if (logger.isInfoEnabled()) {
                logger
                        .info("startElement(String, String, String, Attributes) - uri="
                                + uri
                                + ", localName="
                                + localName
                                + ", name="
                                + name );
            }

            for (int i = 0; i < attributes.getLength(); i++) {
                if (logger.isInfoEnabled()) {
                    logger.info("endElement(String, String, String) - uri=" + uri
                            + ", localName=" + localName + ", qName=" + attributes.getQName(i)+ ", attributes=" + attributes.getValue(i));
                }
            }
            

            super.startElement(uri, localName, name, attributes);
        }
//对text node的处?/span>
public void characters(char[] ch, int start, int length)
                throws SAXException {
            if (logger.isInfoEnabled()) {
                logger.info("characters(char[], int, int) - ch="+ new String(ch,start,length));//q里q样子写才能得到text node 真正?span style="color: red;">倹{?/span>范围Q?/strong> characters() 事g不仅包括不仅一个字W串。它q包括v始和长度信息。实际上Q?code>ch 字符数组包括整个文档。应用程序一定不能尝试读取馈送给 characters() 事g的范围之外的字符?/font>
            }

            super.characters(ch, start, length);
        }




刘铮 2007-11-15 17:27 发表评论
]]>
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是树状结构,cM档案pȝ内数据夹的结构,XPath也类似档案系l的路径命名方式。不qXPath 是一U模?Pattern)Q可以选出 XML档案中,路径W合某个模式的所有节点出来。例如要选catalog底下的cd中所有price元素可以用:</p> <pre> </pre> <pre>/catalog/cd/price     </pre> <pre> </pre> <p>如果XPath的开头是一个斜U(/Q代表这是绝对\径。如果开头是两个斜线Q?/Q表C文件中所有符合模式的元素都会被选出来,即是处于树中不同的层也会被选出来。以下的语法会选出文g中所有叫做cd的元素(在树中的M层都会被选出来)Q?/p> <pre> </pre> <pre>//cd</pre> <pre> </pre> <p><strong>选择未知的元?/strong> <br /> 使用星号QWildcards,Q)可以选择未知的元素。下面这个语法会选出/catalog/cd 的所有子元素Q?/p> <pre> </pre> <pre>/catalog/cd/*</pre> <pre> </pre> <p>以下的语法会选出所有catalog的子元素中,包含有price作ؓ子元素的元素?/p> <pre> </pre> <pre>/catalog/*/price</pre> <pre> </pre> <p>以下的语法会选出有两层父节点Q叫做price的所有元素?/p> <pre> </pre> <pre>/*/*/price</pre> <pre> </pre> <p>以下的语法会选择出文件中的所有元素?/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操作?|)可以选择一个以上的路径。例如:</p> <pre> </pre> <pre>/catalog/cd/title | catalog/cd/artist</pre> <pre> </pre> <p>选择所有title以及artist元素</p> <pre> </pre> <pre>//title | //artist</pre> <pre> </pre> <p>选择所有title以及artist以及price元素</p> <pre> </pre> <pre>//title | //artist | //price</pre> <pre> </pre> <p><strong>选择属?/strong> <br /> 在XPath中,除了选择元素以外Q也可以选择属性。属性都是以@开头。例如选择文g中所有叫做country的属性:</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ؓ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">IJ</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>