﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Java Tools-随笔分类-XML</title><link>http://www.blogjava.net/simie/category/23814.html</link><description /><language>zh-cn</language><lastBuildDate>Sat, 14 Jul 2007 15:03:27 GMT</lastBuildDate><pubDate>Sat, 14 Jul 2007 15:03:27 GMT</pubDate><ttl>60</ttl><item><title>Introduction to XML Schema</title><link>http://www.blogjava.net/simie/archive/2007/07/14/130205.html</link><dc:creator>和田雨</dc:creator><author>和田雨</author><pubDate>Fri, 13 Jul 2007 16:38:00 GMT</pubDate><guid>http://www.blogjava.net/simie/archive/2007/07/14/130205.html</guid><wfw:comment>http://www.blogjava.net/simie/comments/130205.html</wfw:comment><comments>http://www.blogjava.net/simie/archive/2007/07/14/130205.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/simie/comments/commentRss/130205.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/simie/services/trackbacks/130205.html</trackback:ping><description><![CDATA[<p align=left><strong><span><span>Introduction to XML Schema<br>[XML Schema</span>介绍<span>]</span></span></strong></p>
<p align=left><span>翻译<span>:linqingfeng<br></span>英语原文<span>: http://www.w3schools.com/schema/default.asp</span></span></p>
<div align=center><span>
<hr align=center width="100%" SIZE=2>
</span></div>
<p align=left><span>XML Schema is an XML based alternative to DTD.<br>[XML Schema</span><span>是一种<span>XML</span>文件类型定义的基本方法<span>]</span></span></p>
<p align=left><span>An XML schema describes the structure of an XML document.<br>[</span><span>每个<span>XML Schema</span>描述<span>XML</span>文档的结构<span>]</span></span></p>
<p align=left><span>The XML Schema language is also referred to as XML Schema Definition (XSD).<br>[XML Schema</span><span>也称为<span>XML</span>模式定义<span>(XSD)]</span></span></p>
<div align=center><span>
<hr align=center width="100%" SIZE=2>
</span></div>
<p align=left><strong><span>What You Should Already Know<br>[</span></strong><strong><span>在学习之前你应该知道什么<span>]</span></span></strong></p>
<p align=left><span>Before you study the XML Schema Language, you should have a basic understanding of XML and XML Namespaces. It will also help to have some basic understanding of DTD.<br>[</span><span>在你开始学习<span>XML Schema</span>语言之前，你应该对<span>XML</span>和<span>XML</span>的命名空间有基本的了解。那样会帮助你了解<span>DTD</span>（<span>Document Type Definition</span>文件类型定义）<span>].</span></span></p>
<div align=center><span>
<hr align=center width="100%" SIZE=2>
</span></div>
<p align=left><strong><span>What is an XML Schema?<br>[XML Schema</span></strong><strong><span>是什么？<span>]</span></span></strong></p>
<p align=left><span>The purpose of an XML Schema is to define the legal building blocks of an XML document, just like a DTD.<br>[XML Schema</span><span>目标是定义合法的<span>XML</span>文档，就像<span>DTD</span>那样<span>]</span></span></p>
<p align=left><span>An XML Schema:<br>[</span><span>任一个<span>XML Schema</span>：<span>]</span></span></p>
<ul type=disc>
    <li><span>defines elements that can appear in a document<br>[</span><span>定义在文档中的元素<span>]</span></span>
    <li><span>defines attributes that can appear in a document<br>[</span><span>定义在文档中的属性<span>]</span></span>
    <li><span>defines which elements are child elements<br>[</span><span>定义哪些元素为子元素<span>]</span></span>
    <li><span>defines the order of child elements<br>[</span><span>定义子元素的阶<span>]</span></span>
    <li><span>defines the number of child elements<br>[</span><span>定义子元素的数<span>]</span></span>
    <li><span>defines whether an element is empty or can include text<br>[</span><span>定义元素是否为空<span>]</span></span>
    <li><span>defines data types for elements and attributes<br>[</span><span>定义元素和属性的数据类型<span>]</span></span>
    <li><span>defines default and fixed values for elements and attributes<br>[</span><span>定义元素和属性的默认值和固定值<span>]</span></span></li>
</ul>
<div align=center><span>
<hr align=center width="100%" SIZE=2>
</span></div>
<p align=left><strong><span>XML Schemas are the Successors of DTDs<br>[XML Schemas</span></strong><strong><span>是<span>DTD</span>的替代者<span>]</span></span></strong></p>
<p align=left><span>We think that very soon XML Schemas will be used in most Web applications as a replacement for DTDs. Here are some reasons:<br>[</span><span>我们认为很快<span>XML Schemas</span>就会替代<span>DTD</span>而大量应用于<span>Web</span>应用。原因有如下几个：<span>]</span></span></p>
<ul type=disc>
    <li><span>XML Schemas are extensible to future additions<br>[XML Schemas</span><span>易于未来的扩展<span>]</span></span>
    <li><span>XML Schemas are richer and more useful than DTDs<br>[XML Schemas</span><span>比<span>DTD</span>更有用处<span>]</span></span>
    <li><span>XML Schemas are written in XML<br>[XML Schemas</span><span>本身就是<span>XML]</span></span>
    <li><span>XML Schemas support data types<br>[XML Schemas</span><span>支持数据类型<span>]</span></span>
    <li><span>XML Schemas support namespaces<br>[XML Schemas</span><span>支持命名空间<span>]</span></span></li>
</ul>
<div align=center><span>
<hr align=center width="100%" SIZE=2>
</span></div>
<p align=left><strong><span>XML Schema is a W<st1:chmetcnv w:st="on" unitname="C" sourcevalue="3" hasspace="False" negative="False" numbertype="1" tcsc="0">3C</st1:chmetcnv> Recommendation<br>[XML Schemas</span></strong><strong><span>是<span>W<st1:chmetcnv w:st="on" unitname="C" sourcevalue="3" hasspace="False" negative="False" numbertype="1" tcsc="0">3C</st1:chmetcnv></span>推荐使用的<span>]</span></span></strong></p>
<p align=left><span>XML Schema was originally proposed by Microsoft, but became an official W<st1:chmetcnv w:st="on" unitname="C" sourcevalue="3" hasspace="False" negative="False" numbertype="1" tcsc="0">3C</st1:chmetcnv> recommendation in May 2001.<br>[XML Schemas</span><span>最初由微软提出，并在<span>2001</span>年五月成为<span>W<st1:chmetcnv w:st="on" unitname="C" sourcevalue="3" hasspace="False" negative="False" numbertype="1" tcsc="0">3C</st1:chmetcnv></span>的官方指定标准<span>]</span></span></p>
<p align=left><span>The specification is now stable and has been reviewed by the W<st1:chmetcnv w:st="on" unitname="C" sourcevalue="3" hasspace="False" negative="False" numbertype="1" tcsc="0">3C</st1:chmetcnv> Membership. <br>[</span><span>其规格文档现已稳定并加入到<span>W<st1:chmetcnv w:st="on" unitname="C" sourcevalue="3" hasspace="False" negative="False" numbertype="1" tcsc="0">3C</st1:chmetcnv></span>标准中<span>]</span></span></p>
<p align=left><strong><span>XML Schemas - Why?<br>[</span></strong><strong><span>为什么选用<span>XML Schemas</span>？<span>]</span></span></strong></p>
<p align=left>&nbsp;</p>
<div align=center><span>
<hr align=center width="100%" SIZE=2>
</span></div>
<p align=left><span>There are a number of reasons why XML Schema is better than DTD.<br>[XML Schemas</span><span>有趣多方面优于<span>DTD]</span></span></p>
<div align=center><span>
<hr align=center width="100%" SIZE=2>
</span></div>
<p align=left><strong><span>XML Schema has Support for Data Types<br>[XML Schemas</span></strong><strong><span>支持数据类型<span>]</span></span></strong></p>
<p align=left><span>One of the greatest strengths of XML Schemas is the support for data types.<br>[XML Schemas</span><span>其中最好的方面之一就是支持数据类型<span>]</span></span></p>
<p align=left><span>With the support for data types:<br>[</span><span>对数据类型提供的支持有：<span>]</span></span></p>
<ul type=square>
    <li><span>It is easier to describe permissible document content<br>[</span><span>易于描述文档内容是否允许<span>]</span></span>
    <li><span>It is easier to validate the correctness of data<br>[</span><span>易于验证数据的正确性<span>]</span></span>
    <li><span>It is easier to work with data from a database<br>[</span><span>易于复合数据库操作数据<span>]</span></span>
    <li><span>It is easier to define data facets (restrictions on data)<br>[</span><span>易于定义数据约束<span>]</span></span>
    <li><span>It is easier to define data patterns (data formats)<br>[</span><span>易于格式化数据<span>]</span></span>
    <li><span>It is easier to convert data between different data types<br>[</span><span>易于数据在不同的数据类型中转换<span>]</span></span></li>
</ul>
<div align=center><span>
<hr align=center width="100%" SIZE=2>
</span></div>
<p align=left><strong><span>XML Schemas use XML Syntax<br>[XML Schemas</span></strong><strong><span>是用<span>XML</span>的语法<span>]</span></span></strong></p>
<p align=left><span>Another great strength about XML Schemas is that they are written in XML.<br>[</span><span>另一个最大的优点是<span>XML Schemas</span>是用<span>XML</span>书写的<span>]</span></span></p>
<p align=left><span>Because XML Schemas are written in XML:<br>[XML Schemas</span><span>用<span>XML</span>书写的好处有：<span>]</span></span></p>
<ul type=square>
    <li><span>You don't have to learn another language<br>[</span><span>不用学习另一种新的语言<span>]</span></span>
    <li><span>You can use your XML editor to edit your Schema files<br>[</span><span>能在<span>XML</span>的编辑器中编写<span>XML Schemas</span>文件<span>]</span></span>
    <li><span>You can use your XML parser to parse your Schema files<br>[</span><span>能用<span>XML</span>解释器去解释<span>XML Schemas</span>文件<span>]</span></span>
    <li><span>You can manipulate your Schema with the XML DOM<br>[</span><span>能用<span>XML DOM(</span></span><span>Document Object Model,</span><span>文档物件模型</span><span>)</span><span>操作<span>XML Schemas</span>文件<span>]</span></span>
    <li><span>You can transform your Schema with XSLT<br>[</span><span>能用<span>XSLT</span>来转换<span>XML Schemas</span>文件<span>]</span></span></li>
</ul>
<div align=center><span>
<hr align=center width="100%" SIZE=2>
</span></div>
<p align=left><strong><span>XML Schemas Secure Data Communication<br>[XML Schemas</span></strong><strong><span>数据通信更安全<span>]</span></span></strong></p>
<p align=left><span>When data is sent from a sender to a receiver it is essential that both parts have the same "expectations" about the content.<br>[</span><span>当数据从发送方传递给接受方时<span>, XML Schemas</span>会让显示的内容达到你的<span>&#8221;</span>期望<span>&#8221;]</span></span></p>
<p align=left><span>With XML Schemas, the sender can describe the data in a way that the receiver will understand.<br>[XML Schemas</span><span>文件能让发送方的数据被接受方所解释<span>]</span></span></p>
<p align=left><span>A date like this: "<st1:chsdate w:st="on" year="2004" month="3" day="11" islunardate="False" isrocdate="False">03-11-2004</st1:chsdate>" will, in some countries, be interpreted as 3. November and in other countries as 11. March, but an XML element with a data type like this:<br>[</span><span>例如一个日期的表述<span>&#8221; 03-11<st1:chmetcnv w:st="on" unitname="&#8221;" sourcevalue="2004" hasspace="False" negative="True" numbertype="1" tcsc="0">-2004&#8221;</st1:chmetcnv>,</span>在某些国家会被解释为<st1:chsdate w:st="on" year="2006" month="11" day="3" islunardate="False" isrocdate="False"><span>11</span>月<span>3</span>日</st1:chsdate><span>,</span>而在另一些国家却被解释成<st1:chsdate w:st="on" year="2006" month="3" day="11" islunardate="False" isrocdate="False"><span>3</span>月<span>11</span>日</st1:chsdate><span>],</span>而相同的数据在<span>XML</span>上表述成<span>:</span></span></p>
<p align=left><span>&lt;date type="date"&gt;<st1:chsdate w:st="on" year="2004" month="3" day="11" islunardate="False" isrocdate="False">2004-03-11</st1:chsdate>&lt;/date&gt;</span></p>
<p align=left><span>ensures a mutual understanding of the content because the XML data type date requires the format YYYY-MM-DD.<br>[</span><span>由于<span>XML</span>数据类型定义了他的格式是<span>YYYY-MM-DD,</span>从而使能正确的表述其内容的含义<span>]</span></span></p>
<div align=center><span>
<hr align=center width="100%" SIZE=2>
</span></div>
<p align=left><strong><span>XML Schemas are Extensible<br>[XML Schemas</span></strong><strong><span>是可扩展的<span>]</span></span></strong></p>
<p align=left><span>XML Schemas are extensible, just like XML, because they are written in XML.<br>[XML Schemas</span><span>是可扩展的<span>,</span>就像普通的<span>XML</span>一样<span>,</span>因为他本身就是一个<span>XML]</span></span></p>
<p align=left><span>With an extensible Schema definition you can:<br>[</span><span>可扩展性的定义带来的好处有：<span>]</span></span></p>
<ul type=square>
    <li><span>Reuse your Schema in other Schemas<br>[</span><span>可从用你的规则与其他规则<span>]</span></span>
    <li><span>Create your own data types derived from standard types<br>[</span><span>从其他的标准的数据类型中创建自定义的数据类型<span>]</span></span>
    <li><span>Reference multiple schemas from the same document<br>[</span><span>同一个文档可以引用多个规则<span>]</span></span></li>
</ul>
<div align=center><span>
<hr align=center width="100%" SIZE=2>
</span></div>
<p align=left><strong><span>Well-Formed is not Enough<br>[</span></strong><strong><span>良好格式还并不足够<span>]</span></span></strong></p>
<p align=left><span>A well-formed XML document is a document that conforms to the XML syntax rules:<br>[</span><span>一个具有良好格式的<span>XML</span>文档是完全符合<span>XML</span>的语法规则的：<span>]</span></span></p>
<ul type=disc>
    <li><span>must begin with the XML declaration<br>[</span><span>必须由<span>XML</span>声明开始<span>]</span></span>
    <li><span>must have one unique root element<br>[</span><span>必须有且仅有一个根节点<span>]</span></span>
    <li><span>all start tags must match end-tags<br>[</span><span>所有标签都必须有相对的结束标签<span>]</span></span>
    <li><span>XML tags are case sensitive<br>[XML</span><span>的标签是区分大小写的<span>]</span></span>
    <li><span>all elements must be closed<br>[</span><span>所有的元素都必须是闭合的<span>]</span></span>
    <li><span>all elements must be properly nested<br>[</span><span>所有元素都必须合理的嵌套<span>(</span>元素不可以交叉<span>)]</span></span>
    <li><span>all attribute values must be quoted<br>[</span><span>所有的属性都必须被引用<span>]</span></span>
    <li><span>XML entities must be used for special characters<br>[</span><span>所有的<span>XML</span>实体都必须用特殊的字符来做<span>]</span></span></li>
</ul>
<p align=left><span>Even if documents are Well-Formed they can still contain errors, and those errors can have serious consequences. Think of this situation: you order 5 gross of laser printers, instead of 5 laser printers. With XML Schemas, most of these errors can be caught by your validating software.<br>[</span><span>即使文档完全符合格式也会包含错误<span>,</span>而且有些错误会有严重的逻辑问题<span>.</span>想一想这样的情况<span>:</span>你订购五台激光打印机是为了来替代五台激光打印机<span>.</span>配合<span>XML Schemas,</span>大部分的错误都可以由你的软件校验出来的<span>.]</span></span></p>
<p align=left><strong><span>XSD How To<br>[XSD</span></strong><strong><span>如何<span>]</span></span></strong></p>
<div align=center><span>
<hr align=center width="100%" SIZE=2>
</span></div>
<p align=left><span>XML documents can have a reference to a DTD or an XML Schema.<br>[XML</span><span>文档能和一个<span>DTD</span>或者一个<span>XML Schema</span>相关<span>]</span></span></p>
<div align=center><span>
<hr align=center width="100%" SIZE=2>
</span></div>
<p align=left><strong><span>A Simple XML Document<br>[</span></strong><strong><span>一个简单的<span>XML</span>文档<span>]</span></span></strong></p>
<p align=left><span>Look at this simple XML document called "note.xml":<br>[</span><span>看看这个名为<span>"note.xml"</span>的<span>XML</span>文档<span>]</span></span></p>
<table cellSpacing=0 cellPadding=0 width="100%" border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>&lt;?xml version="1.0"?&gt;</span></p>
            <p align=left><span>&lt;note&gt;</span></p>
            <p align=left><span>&lt;to&gt;Tove&lt;/to&gt;</span></p>
            <p align=left><span>&lt;from&gt;Jani&lt;/from&gt;</span></p>
            <p align=left><span>&lt;heading&gt;Reminder&lt;/heading&gt;</span></p>
            <p align=left><span>&lt;body&gt;Don't forget me this weekend!&lt;/body&gt;</span></p>
            <p align=left><span>&lt;/note&gt;</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p align=left>&nbsp;</p>
<div align=center><span>
<hr align=center width="100%" SIZE=2>
</span></div>
<p align=left><strong><span>A Simple DTD<br>[</span></strong><strong><span>一个简单的<span>DTD]</span></span></strong></p>
<p align=left><span>This is a simple DTD file called "note.dtd" that defines the elements of the XML document above ("note.xml"):<br>[</span><span>这个简单的<span>DTD"note.dtd"</span>定义了<span>"note.xml"</span>中的元素<span>:]</span></span></p>
<table cellSpacing=0 cellPadding=0 width="100%" border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>&lt;!ELEMENT note (to, from, heading, body)&gt;</span></p>
            <p align=left><span>&lt;!ELEMENT to (#PCDATA)&gt;</span></p>
            <p align=left><span>&lt;!ELEMENT from (#PCDATA)&gt;</span></p>
            <p align=left><span>&lt;!ELEMENT heading (#PCDATA)&gt;</span></p>
            <p align=left><span>&lt;!ELEMENT body (#PCDATA)&gt;</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p align=left><span>Line 1 defines the <strong>note</strong> element to have four elements: "to, from, heading, body". Line 2-5 defines the <strong>to</strong> element to be of the type "#PCDATA", the <strong>from</strong> element to be of the type "#PCDATA", and so on... <br>[</span><span>第一行定义了<strong><span>note</span></strong>元素有四个子元素<span>: "to, from, heading, body".</span>而第二行到第五行分别定义了<strong><span>to</span></strong>和<strong><span>from</span></strong>等元素为<span>"#PCDATA"]</span></span></p>
<div align=center><span>
<hr align=center width="100%" SIZE=2>
</span></div>
<p align=left><strong><span>A Simple XML Schema<br>[</span></strong><strong><span>一个简单的<span>XML Schema] </span></span></strong></p>
<p align=left><span>This is a simple XML Schema file called "note.xsd" that defines the elements of the XML document above ("note.xml"): <br>[</span><span>这个简单的<span>XML Schema</span>文件<span>"note.xsd"</span>同样定义了<span>"note.xml"</span>中的元素：<span>]</span></span></p>
<table cellSpacing=0 cellPadding=0 width="100%" border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>&lt;?xml version="1.0"?&gt;</span></p>
            <p align=left><span>&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"</span></p>
            <p align=left><span>targetNamespace="http://www.w3schools.com"</span></p>
            <p align=left><span>xmlns="http://www.w3schools.com"</span></p>
            <p align=left><span>elementFormDefault="qualified"&gt;</span></p>
            <p align=left><span>&lt;xs:element name="note"&gt;</span></p>
            <p align=left><span><span>&nbsp;&nbsp;&nbsp; </span>&lt;xs:complexType&gt;</span></p>
            <p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;xs:sequence&gt;</span></p>
            <p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;xs:element name="to" type="xs:string"/&gt;</span></p>
            <p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;xs:element name="from" type="xs:string"/&gt;</span></p>
            <p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;xs:element name="heading" type="xs:string"/&gt;</span></p>
            <p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;xs:element name="body" type="xs:string"/&gt;</span></p>
            <p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;/xs:sequence&gt;</span></p>
            <p align=left><span><span>&nbsp;&nbsp;&nbsp; </span>&lt;/xs:complexType&gt;</span></p>
            <p align=left><span>&lt;/xs:element&gt;</span></p>
            <p align=left><span>&lt;/xs:schema&gt;</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p align=left><span>The <strong>note</strong> element is said to be of a <strong>complex type</strong> because it contains other elements. The other elements (to, from, heading, body) are said to be <strong>simple types</strong> because they do not contain other elements. You will learn more about simple and complex types in the following chapters.<br>[</span><span>那个<strong><span>note</span></strong>元素由于包含有其他的子元素而被定义为<strong><span>complex type(</span>复合类型<span>).</span></strong><span> </span>其他包含在它里面的元素<span>(to, from, heading, body)</span>都被定义为<strong><span>simple types(</span>简单类型<span>).</span></strong><span> </span>你将会在以后的章节里面学到更多关于复合类型和简单类型的知识<span>.]</span></span></p>
<div align=center><span>
<hr align=center width="100%" SIZE=2>
</span></div>
<p align=left><strong><span>A Reference to a DTD<br>[DTD</span></strong><strong><span>的引用<span>]</span></span></strong></p>
<p align=left><span>This XML document has a reference to a DTD:<br>[</span><span>这个<span>XML</span>文档引用自一个<span>DTD:]</span></span></p>
<table cellSpacing=0 cellPadding=0 width="100%" border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>&lt;?xml version="1.0"?&gt;</span></p>
            <p align=left><span>&lt;!DOCTYPE note SYSTEM</span></p>
            <p align=left><span>"http://www.w3schools.com/dtd/note.dtd"&gt;</span></p>
            <p align=left><span>&lt;note&gt;</span></p>
            <p align=left><span>&lt;to&gt;Tove&lt;/to&gt;</span></p>
            <p align=left><span>&lt;from&gt;Jani&lt;/from&gt;</span></p>
            <p align=left><span>&lt;heading&gt;Reminder&lt;/heading&gt;</span></p>
            <p align=left><span>&lt;body&gt;Don't forget me this weekend!&lt;/body&gt;</span></p>
            <p align=left><span>&lt;/note&gt;</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p align=left>&nbsp;</p>
<div align=center><span>
<hr align=center width="100%" SIZE=2>
</span></div>
<p align=left><strong><span>A Reference to an XML Schema<br>[XML Schema</span></strong><strong><span>的引用<span>]</span></span></strong></p>
<p align=left><span>This XML document has a reference to an XML Schema:<br>[</span><span>这个<span>XML</span>文档引用自一个<span>XML Schema</span>文档<span>:]</span></span></p>
<table cellSpacing=0 cellPadding=0 width="100%" border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>&lt;?xml version="1.0"?&gt;</span></p>
            <p align=left><span>&lt;note</span></p>
            <p align=left><span>xmlns="http://www.w3schools.com"</span></p>
            <p align=left><span>xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</span></p>
            <p align=left><span>xsi:schemaLocation="http://www.w3schools.com note.xsd"&gt;</span></p>
            <p align=left>&nbsp;</p>
            <p align=left><span>&lt;to&gt;Tove&lt;/to&gt;</span></p>
            <p align=left><span>&lt;from&gt;Jani&lt;/from&gt;</span></p>
            <p align=left><span>&lt;heading&gt;Reminder&lt;/heading&gt;</span></p>
            <p align=left><span>&lt;body&gt;Don't forget me this weekend!&lt;/body&gt;</span></p>
            <p align=left><span>&lt;/note&gt;</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p>&nbsp;</p>
<p align=left><strong><span>XSD - The &lt;schema&gt; Element<br>[XSD</span></strong><strong><span>中的<span>&lt;schema&gt;</span>元素<span>]</span></span></strong></p>
<div align=center><span>
<hr align=center width="100%" SIZE=2>
</span></div>
<p align=left><span>The &lt;schema&gt; element is the root element of every XML Schema!<br>[&lt;schema&gt;</span><span>元素是每一个<span>XML Schema</span>文件的根元素<span>!]</span></span></p>
<div align=center><span>
<hr align=center width="100%" SIZE=2>
</span></div>
<p align=left><strong><span>The &lt;schema&gt; Element<br>[&lt;schema&gt;</span></strong><strong><span>元素<span>]</span></span></strong></p>
<p align=left><span>The &lt;schema&gt; element is the root element of every XML Schema:<br>[[&lt;schema&gt;</span><span>元素是每一个<span>XML Schema</span>文件的根元素<span>:]</span></span></p>
<table cellSpacing=0 cellPadding=0 width="100%" border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>&lt;?xml version="1.0"?&gt;</span></p>
            <p align=left><span>&lt;xs:schema&gt;</span></p>
            <p align=left><span>...</span></p>
            <p align=left><span>...</span></p>
            <p align=left><span>&lt;/xs:schema&gt;</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p align=left><span>The &lt;schema&gt; element may contain some attributes. A schema declaration often looks something like this:<br>[[&lt;schema&gt;</span><span>元素包含一些属性<span>.</span>一般声明如下<span>:]</span></span></p>
<table cellSpacing=0 cellPadding=0 width="100%" border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>&lt;?xml version="1.0"?&gt;</span></p>
            <p align=left><span>&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"</span></p>
            <p align=left><span>targetNamespace="http://www.w3schools.com"</span></p>
            <p align=left><span>xmlns="http://www.w3schools.com"</span></p>
            <p align=left><span>elementFormDefault="qualified"&gt;</span></p>
            <p align=left><span>...</span></p>
            <p align=left><span>...</span></p>
            <p align=left><span>&lt;/xs:schema&gt;</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p align=left><span>The following fragment:<br>[</span><span>以下片段<span>:]</span></span></p>
<table cellSpacing=0 cellPadding=0 width="100%" border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>xmlns:xs="http://www.w3.org/2001/XMLSchema"</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p align=left><span>indicates that the elements and data types used in the schema (schema, element, complexType, sequence, string, boolean, etc.) come from the "http://www.w3.org/2001/XMLSchema" namespace. It also specifies that the elements and data types that come from the "http://www.w3.org/2001/XMLSchema" namespace should be prefixed with <strong>xs:<br></strong>[</span><span>说明元素和数据类型的使用模式<span>(schema, element, complexType, sequence, string, Boolean</span>等等<span>)</span>来自于<span>"<a href="http://www.w3.org/2001/XMLSchema">http://www.w3.org/2001/XMLSchema</a>"</span>命名空间<span>.</span>同时也可用<strong><span>xs:</span></strong>作为前缀<span>]<strong></strong></span></span></p>
<p align=left><span>This fragment:<br>[</span><span>如下片段<span>:]</span></span></p>
<table cellSpacing=0 cellPadding=0 width="100%" border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>targetNamespace="http://www.w3schools.com"</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p align=left><span>indicates that the elements defined by this schema (note, to, from, heading, body.) come from the "http://www.w3schools.com" namespace.<br>[</span><span>说明元素<span>(note, to, from, heading, body.)</span>的使用模式来自于命名空间<span>"http://www.w3schools.com"]</span></span></p>
<p align=left><span>This fragment:<br>[</span><span>如下片段<span>:]</span></span></p>
<table cellSpacing=0 cellPadding=0 width="100%" border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>xmlns="http://www.w3schools.com"</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p align=left><span>indicates that the default namespace is "http://www.w3schools.com".<br>[</span><span>说明默认的命名空间是<span>"http://www.w3schools.com".]</span></span></p>
<p align=left><span>This fragment:<br>[</span><span>如下片段<span>:]</span></span></p>
<table cellSpacing=0 cellPadding=0 width="100%" border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>elementFormDefault="qualified"</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p align=left><span>indicates that any elements used by the XML instance document which were declared in this schema must be namespace qualified.<br>[</span><span>说明所有全局元素的子元素将被以缺省方式放到目标命名空间，连同全局元素或者类型一起<span>]</span></span></p>
<div align=center><span>
<hr align=center width="100%" SIZE=2>
</span></div>
<p align=left><strong><span>Referencing a Schema in an XML Document<br>[</span></strong><strong><span>在<span>XML</span>文件中引用<span>Schema]</span></span></strong></p>
<p align=left><span>This XML document has a reference to an XML Schema:<br>[</span><span>如下<span>XML</span>文档有一个<span>XML Schema</span>的引用<span>:]</span></span></p>
<table cellSpacing=0 cellPadding=0 width="100%" border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>&lt;?xml version="1.0"?&gt;</span></p>
            <p align=left><span>&lt;note xmlns="http://www.w3schools.com"</span></p>
            <p align=left><span>xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</span></p>
            <p align=left><span>xsi:schemaLocation="http://www.w3schools.com note.xsd"&gt;</span></p>
            <p align=left><span>&lt;to&gt;Tove&lt;/to&gt;</span></p>
            <p align=left><span>&lt;from&gt;Jani&lt;/from&gt;</span></p>
            <p align=left><span>&lt;heading&gt;Reminder&lt;/heading&gt;</span></p>
            <p align=left><span>&lt;body&gt;Don't forget me this weekend!&lt;/body&gt;</span></p>
            <p align=left><span>&lt;/note&gt;</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p align=left><span>The following fragment:<br>[</span><span>下面片段<span>:]</span></span></p>
<table cellSpacing=0 cellPadding=0 width="100%" border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>xmlns="http://www.w3schools.com"</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p align=left><span>specifies the default namespace declaration. This declaration tells the schema-validator that all the elements used in this XML document are declared in the "http://www.w3schools.com" namespace.<br>[</span><span>声明默认的命名空间<span>.</span>此声明告知模式校验器让所有<span>XML</span>元素都在命名空间<span>"http://www.w3schools.com"</span>下<span>]</span></span></p>
<p align=left><span>Once you have the XML Schema Instance namespace available:<br>[</span><span>有时你可以用到<span>XML</span>模式实例命名空间<span>:]</span></span></p>
<table cellSpacing=0 cellPadding=0 width="100%" border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p align=left><span>you can use the schemaLocation attribute. This attribute has two values. The first value is the namespace to use. The second value is the location of the XML schema to use for that namespace:<br>[</span><span>你能用上<span>schemaLocation</span>这个属性<span>.</span>这个属性有两个含义<span>.</span>第一个含义是这个命名空间被使用<span>.</span>第二个含义是定位<span>XML schema</span>用到的命名空间<span>:]</span></span></p>
<table cellSpacing=0 cellPadding=0 width="100%" border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>xsi:schemaLocation="http://www.w3schools.com note.xsd"</span></p>
            </td>
        </tr>
    </tbody>
</table>
<br><br>
<p id=TBPingURL>Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=705007</p>
<img src ="http://www.blogjava.net/simie/aggbug/130205.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/simie/" target="_blank">和田雨</a> 2007-07-14 00:38 <a href="http://www.blogjava.net/simie/archive/2007/07/14/130205.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>RSS</title><link>http://www.blogjava.net/simie/archive/2007/07/14/130204.html</link><dc:creator>和田雨</dc:creator><author>和田雨</author><pubDate>Fri, 13 Jul 2007 16:37:00 GMT</pubDate><guid>http://www.blogjava.net/simie/archive/2007/07/14/130204.html</guid><wfw:comment>http://www.blogjava.net/simie/comments/130204.html</wfw:comment><comments>http://www.blogjava.net/simie/archive/2007/07/14/130204.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/simie/comments/commentRss/130204.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/simie/services/trackbacks/130204.html</trackback:ping><description><![CDATA[<h2>内容目录</h2>
<p><a href="http://www.netvtm.com/w3s/rss/rss-intro.html"><u><font color=#0000ff>RSS Introduction</font></u></a> [RSS介绍]<br>An introduction to what RSS is and how it can be used.<br>介绍什么是RSS，它的应用。</p>
<p><a href="http://www.netvtm.com/w3s/rss/rss-history.html"><u><font color=#0000ff>RSS History</font></u></a> [RSS历史]<br>How RSS started and how it has been developed and changed<br>RSS是怎么诞生的，它是怎样发展和变化的.</p>
<p><a href="http://www.netvtm.com/w3s/rss/rss-syntax.html"><u><font color=#0000ff>RSS Syntax</font></u></a> [RSS语法]<br>A brief introduction how to make RSS.<br>制作RSS的简单介绍</p>
<p><a href="http://www.netvtm.com/w3s/rss/rss-channel.html"><u><font color=#0000ff>RSS Channel</font></u></a> [RSS频道]<br>How to make and what can be included in the &lt;channel&gt; element.<br>怎么完成&lt;channel&gt;元素里的内容</p>
<p><a href="http://www.netvtm.com/w3s/rss/rss-item.html"><u><font color=#0000ff>RSS Item</font></u></a> [RSS内容]- How to make and what can be included in the &lt;item&gt; element. <br>怎样的&lt;item&gt;元素才算合理的</p>
<p><a href="http://www.netvtm.com/w3s/rss/rss-publishing.html"><u><font color=#0000ff>RSS Publishing</font></u></a> [RSS 发布]- How to publish your RSS. <br>怎样发布的你的RSS</p>
<p><a href="http://www.netvtm.com/w3s/rss/rss-readers.html"><u><font color=#0000ff>RSS Readers</font></u></a> [RSS阅读器]- How to read other site's RSS. <br>怎样阅读其他网站的RSS</p>
<br>
<div id=record>
<p class=title>RSS介绍<br><small>翻译：Linyupark / 2006-04-24</small></p>
<div class=content>
<p class=intro>RSS was designed to share data like headlines, links and short descriptions of these.<br>RSS 将数据分成像标题，连接和简单描述的形式。（浓缩过的信息） </p>
<p class=intro>RSS allows fast browsing for news and updates.<br>RSS能快速浏览新闻和更新内容。</p>
<hr>
<h2>What You Should Already Know<br>哪些是你应该已经知道的</h2>
<p>Before you continue you should have a basic understanding of the following:<br>在继续学习前你应该有下面这些知识点的基础：</p>
<ul>
    <li>HTML / XHTML
    <li>XML / XML 命名空间</li>
</ul>
<hr>
<h2>What is RSS?<br>什么是RSS？</h2>
<ul>
    <li>RSS stands for <strong>R</strong>eally <strong>S</strong>imple <strong>S</strong>yndication<br>RSS就是 <strong>R</strong>eally <strong>S</strong>imple <strong>S</strong>yndication （真正的简单聚合）
    <li>RSS allows you to syndicate your site content<br>RSS可以聚合你网站上的内容
    <li>RSS is a selected list of defined items on a site<br>RSS是一站点上被选中的内容清单
    <li>RSS defines an easy way to share and view headlines and content<br>RSS是一种更便捷的方法去查看标题和内容
    <li>RSS files can be automatically updated<br>RSS文件可以自动的更新
    <li>RSS allows personalized views for different sites<br>RSS允许更具人性化（个性化）的查看不同的站点
    <li>RSS is written in XML<br>RSS是用XML来书写的</li>
</ul>
<hr>
<h2>Why Use RSS?<br>为什么使用RSS？</h2>
<p><strong>RSS was designed to show selected data.<br>RSS 能展示被选择的数据（针对性）</strong></p>
<p>Without RSS, users will have to check your site daily to check for new updates. This may be too time-consuming for many users. With an RSS feed (RSS is often called a News Feed or RSS Feed) they can check your site faster using an RSS aggregator (a site or program that gathers and sorts out several RSS feeds).<br>没有RSS的话，用户将必须每天到你的站上看看有没更新内容。这对于一些用户来说是很浪费时间的。通过一个RSS feed他们可以使用RSS阅读器更快的查看你的站是否有更新。</p>
<p>Since RSS data is small and fast-loading, it can easily be used with services like cell phones or PDA's. <br>因为RSS数据很小而且加载速度很快，它可以容易的在手机或PDA服务上使用。</p>
<p>Web-rings with similar information can easily share data on their sites to make them better and more useful.<br>Wb-rings通过相似的信息可以方便的共享他们站点的信息。</p>
<hr>
<h2>Who Should Use RSS?<br>哪些人应该使用RSS？</h2>
<p><strong>Webmasters who seldom update their sites do not need RSS.<br>站长如不是经常更新站带内信息的话可以不使用RSS</strong></p>
<p>RSS can be useful for Web sites that are updated frequently, like:<br>RSS对于那些经常更新的站点来说是和有帮助的，像：</p>
<ul>
    <li>News sites - Lists news with title, date and descriptions<br>新闻站
    <li>Site changes - Lists changed pages or new pages<br>站点改动信息版块
    <li>Companies - Lists news and new products<br>公司站 - 新闻 和 新产品
    <li>Calendars - Lists upcoming events and important days<br>日历</li>
</ul>
<hr>
<h2>The Future of RSS<br>展望RSS</h2>
<p><strong>RSS is going to be everywhere.<br>RSS将遍及每个角落 </strong></p>
<p>Thousands of sites use RSS and more people understand its usefulness every day.<br>数千站使用着RSS并且每天有越来越多的人明白了它的有用之处。</p>
<p>By using RSS, information on the Web becomes easier to find and web developers can spread their information more easily to special interest groups.<br>有了RSS，在WEB上的信息变的容易找到并且WEB开发者能够容易的将信息传播给兴趣小组。</p>
<p>Hopefully, future RSS versions will include additional fields that will make it even easier to categorize and share.<br>未来的RSS版本可能包含额外的领域来使分类和分享信息来的更容易。</p>
<br>
<div id=record>
<p class=title>RSS的历史<br><small>翻译：Linyupark / 2006-04-24</small></p>
<div class=content>
<p class=intro>RSS has been released in many different versions.<br>RSS发布过一些不同的版本</p>
<hr>
<h2>The History of RSS<br>RSS的历史 </h2>
<p>Here is the history of RSS according to Dave Winer (key developer of most of the RSS formats):<br>依据Dave Winer（RSS开发的关键人物）的描述，RSS有这样的历史：</p>
<ul>
    <li>Dec. 1997 - Dave Winer developed scriptingNews<br>1997年12月 Dave Winer 开发了新闻脚本<br>&nbsp;
    <li>Mar. 1999 - RSS 0.90 was developed by Netscape, which supported the scriptingNews format. This was simply XML with a RDF Header<br>&nbsp;1999年三月 - RSS 0.90 由网景公司开发,支持格式化新闻脚本.<br>
    <li>Jun. 1999 - scriptingNews 2.0b1 was developed by Dave Winer at UserLand. This included Netscape's RSS 0.90 features<br>新闻脚本2.0b1于 1999年6月由Dave Winer开发，包含了网景RSS 0.90的特点<br>&nbsp;
    <li>Jul. 1999 - RSS 0.91 was an attempt by Netscape to move towards a more standard format and included most features from scriptingNews 2.0b1 but they removed the RDF header<br>1999年7月 - RSS0.91 网景试图移入更多的标准格式并包含更多来自scriptingNews2.0b1的特性但是他们却删除了RDF头 &nbsp;<br>
    <li>Jul. 1999 - UserLand uses RSS 0.91 and gets rid of scriptingNews<br>1999年7月 - UserLand利用了没有scriptNews的RSS0.91<br>&nbsp;
    <li>Netscape discontinues their RSS development<br>&nbsp;网景中断了他们对RSS的开发
    <li>Jun. 2000 - Official RSS 0.91 specification release from UserLand<br>&nbsp;UserLand公开了规范文档<br>
    <li>Aug. 2000 - RSS 1.0 developed by a group lead by Rael Dornfest at O'Reilly. This format uses RDF and namespaces. Because of its name it is often confused as being a new version of 0.91, but this is a completely new format with no ties to RSS 0.91<br>&nbsp;
    <li>Dec. 2000 - RSS 0.92 developed by Dave Winer at UserLand and includes optional elements<br>&nbsp;
    <li>Sep. 2002 - RSS 2.0 is designed by Dave Winer after leaving Userland<br>&nbsp;
    <li>Jul. 2003 - RSS 2.0 specification released through Harvard under a Creative Commons license</li>
</ul>
<hr>
<h2>What Are The differences?<br>有什么区别？</h2>
<p>Unlike the other RSS formats, RSS 1.0 was developed using the W3C RDF (Resource Description Framework) standard. <br>不像其他RSS的规格,RSS1.0使用W3C的DRF标准开发.</p>
<hr>
<h2>What RSS Version Should I Use?<br>我该用哪个版本的RSS？</h2>
<p>RSS 0.91 and RSS 2.0 are easiest to understand. RSS 1.0 is more complex to learn and takes more time and bandwidth to process.<br>RSS0.91和RSS2.0是最容易理解的版本。1.0学起来比较复杂而且需要花更多的带宽来运作。</p>
<p>Our tutorial is based on RSS 2.0.<br>我们的教程是基于RSS2.0的</p>
<hr>
<h2>Is There an RSS Web Standard?<br>有RSS WEB标准吗？</h2>
<p>There is no official standard for RSS. But about 50 % of all RSS feeds use the RSS 0.91 format. About 25 % use the RSS 1.0 format and the last 25 % is split between the other RSS 0.9x versions and RSS 2.0. <br>没有正式的RSS标准。但在所有的RSS feeds中大约有50% 使用RSS 0.91规格. 25%使用RSS1.0规格并且至少有25%使用 RSS 0.9x 和 RSS 2.0之间的版本。</p>
<br>
<p>
<div id=record>
<p class=title>RSS语法<br><small>翻译：Linyupark / 2006-04-24</small></p>
<div class=content>
<p class=intro>The syntax rules of RSS 2.0 are very simple and very strict.<br>RSS2.0的语法规则非常简单并十分的严格。</p>
<p class=intro>This tutorial teaches how to create your own RSS feed and maintain it.<br>这个教程会教你如何建立你自己的RSS feed并维护它。</p>
<hr>
<h2>An Example RSS document<br>一个RSS文档的例子</h2>
<p><strong>RSS documents use a self-describing and simple syntax.<br>RSS文档使用了简单的自描述语法。</strong></p>
<pre>&lt;?xml version="1.0" encoding="ISO-8859-1" ?&gt;<br><br>&lt;rss version="2.0"&gt;</pre>
<pre>&lt;channel&gt;<br><br>&lt;title&gt;W3Schools&lt;/title&gt;<br>&lt;link&gt;http://www.w3schools.com&lt;/link&gt;<br>&lt;description&gt;W3Schools Web Tutorials &lt;/description&gt;</pre>
<pre>&lt;item&gt;<br>&lt;title&gt;RSS Tutorial&lt;/title&gt;<br><br>&lt;link&gt;http://www.w3schools.com/rss&lt;/link&gt;<br>&lt;description&gt;Check out the RSS tutorial<br>on W3Schools.com&lt;/description&gt;<br>&lt;/item&gt;</pre>
<pre>&lt;/channel&gt;<br>&lt;/rss&gt;</pre>
<p>The first line in the document - the XML declaration - defines the XML version and the character encoding used in the document. In this case the document conforms to the 1.0 specification of XML and uses the ISO-8859-1 (Latin-1/West European) character set. <br>文档内的第一行为XML声明-定义了XML的版本和文档使用的字符编码。这个例子里文档使用的是XML1.0版本,编码为 ISO-8859-1.</p>
<p>The next line describes the RSS element of the document (like it was saying: "this is an RSS document - version 2.0"): <br>下面的一行描述RSS文档元素（这个就像在说:"这是一份RSS2.0版本的文档"）</p>
<pre>&lt;rss version="2.0"&gt;</pre>
<p>The next line describes the &lt;channel&gt; element of the document:<br>再下面的一行描述了文档的&lt;channel&gt;元素:</p>
<pre>&lt;channel&gt;</pre>
<p>The next three lines describe three child elements of the &lt;channel&gt; element (&lt;title&gt;, &lt;link&gt; and &lt;description&gt;):<br>接下来的三行描述了&lt;channel&gt;的三个子元素（&lt;title&gt;,&lt;link&gt;,&lt;description&gt;）</p>
<pre>&lt;title&gt;W3Schools&lt;/title&gt;<br>&lt;link&gt;http://www.w3schools.com&lt;/link&gt;<br><br>&lt;description&gt;W3Schools Web Tutorials&lt;/description&gt;</pre>
<p>Then there is an &lt;item&gt; element. The &lt;item&gt; element contains the information you would like your RSS feed to show (&lt;title&gt;, &lt;link&gt; and &lt;description&gt;). You can add multiple &lt;item&gt; elements:<br>然后就是&lt;item&gt;元素,&lt;item&gt;元素包含了RSS展示的一些信息（&lt;title&gt;, &lt;link&gt; 和 &lt;description&gt;）你可以添加数个&lt;item&gt;元素：</p>
<pre>&lt;item&gt;<br>&lt;title&gt;RSS Tutorial&lt;/title&gt;<br>&lt;link&gt;http://www.w3schools.com/rss&lt;/link&gt;<br>&lt;description&gt;Check out the RSS tutorial<br>on W3Schools.com&lt;/description&gt;<br>&lt;/item&gt;</pre>
<p>Finally, the two last lines close the &lt;channel&gt; and &lt;rss&gt; elements:<br>最后的两行关闭&lt;channel&gt; 和 &lt;rss&gt; 元素：</p>
<pre>&lt;/channel&gt;<br>&lt;/rss&gt;</pre>
<p>Did you understand that this was an RSS feed from W3Schools? Don't you agree that RSS is pretty self-descriptive?<br>你明白这是个来自W3S的RSSfeed了不？难道你不认为这是个很好的RSS自我描述？</p>
<hr>
<h2>RSS is an XML Dialect<br>RSS 是一种XML的方言 </h2>
<p><strong>Because RSS is XML, there are a couple of things you must remember.<br>因为RSS是XML，有一些事你必须了解</strong></p>
<ul>
    <li>All XML elements must have a closing tag<br>所有XML元素必须有关闭标签
    <li>XML tags are case sensitive<br>XML标签区分大小写
    <li>All XML elements must be properly nested<br>所有XML元素必须合理嵌套
    <li>Attribute values must always be quoted<br>属性值必须在引号内 </li>
</ul>
<hr>
<h2>Comments in RSS<br>RSS注释 </h2>
<p>The syntax for writing comments in RSS is similar to that of HTML:<br>书写RSS注释的语法和HTML十分相似： </p>
<pre>&lt;!-- This is a comment --&gt;</pre>
</div>
</div>
</div>
</div>
<p><br>
<p class=title>RSS channel元素<br><small>翻译：Linyupark / 2006-04-24</small></p>
<p class=intro>The &lt;channel&gt; element is where you describe your RSS feed.<br>&lt;channel&gt;元素内是描述RSS feed的地方</p>
<p class=intro>With RSS 2.0 there are a lot of different options for the channel element.<br>对于channel元素来说RSS2.0有很多不同的选择（指内部可选择的元素有很多种）</p>
<hr>
<h2>The &lt;channel&gt; Element<br>&lt;channel&gt;元素</h2>
<p>The RSS &lt;channel&gt; element is where items are displayed. It is like an RSS headline. Channel elements normally do not change very often.<br>RSS的&lt;channel&gt;元素是项目内容显示的地方。它就像RSS的标题。一般来讲它不会频繁的改动。</p>
<p>There are three required elements inside the &lt;channel&gt; element: &lt;title&gt;, &lt;link&gt;, and &lt;description&gt;.<br>有三个内部元素是必须有的:&lt;title&gt;, &lt;link&gt;, 和 &lt;description&gt;.</p>
<p>The &lt;title&gt; element should contain a short description of your site and your RSS feed:<br>&lt;title&gt;元素里应该包含你的站和你的RSS feed简短的说明：</p>
<pre>&lt;title&gt;W3Schools News Update&lt;/title&gt;</pre>
<p>The &lt;link&gt; element should define the link to your site's main page:<br>&lt;link&gt;元素应该定义你网站主页的链界：</p>
<pre>&lt;link&gt;http://www.w3schools.com&lt;/link&gt;</pre>
<p>The final required element is &lt;description&gt;. This element should describe your RSS feed.<br>最后必须有的元素就是 &lt;description&gt;,这个元素应该描述你的RSS feed.</p>
<pre>&lt;description&gt;W3Schools Web Tutorials&lt;/description&gt;</pre>
<br>
<hr>
<h2>Optional Elements in &lt;channel&gt;<br>&lt;channel&gt;内的可选元素</h2>
<table class=ex cellSpacing=0 border=1>
    <tbody>
        <tr>
            <th vAlign=top align=left width="30%" height=19>Element 元素</th>
            <th vAlign=top align=left width="70%" height=19>Description 描述</th>
        </tr>
        <tr>
            <td vAlign=top height=19>&lt;category&gt;</td>
            <td vAlign=top height=19>Defines one or more categories the channel belongs to<br>定义一个或多个频道分类</td>
        </tr>
        <tr>
            <td vAlign=top height=19>&lt;cloud&gt;</td>
            <td vAlign=top height=19>Allows notification of updates.<br>允许更新通告</td>
        </tr>
        <tr>
            <td vAlign=top height=19>&lt;copyright&gt;</td>
            <td vAlign=top height=19>Notifies about copyrighted material<br>提醒有关版权</td>
        </tr>
        <tr>
            <td vAlign=top height=19>&lt;docs&gt;</td>
            <td vAlign=top height=19>An URL to documentation on the RSS version the channel is using<br>频道所使用的RSS版本文档URL</td>
        </tr>
        <tr>
            <td vAlign=top height=19>&lt;generator&gt;</td>
            <td vAlign=top height=19>If the channel is created using an automatic generator, this is defined here<br>如果频道是自动生成器产生的，就在这里定义</td>
        </tr>
        <tr>
            <td vAlign=top height=19>&lt;image&gt;</td>
            <td vAlign=top height=19>Inserts a picture to the channel.<br>给频道加图片</td>
        </tr>
        <tr>
            <td vAlign=top height=19>&lt;language&gt;</td>
            <td vAlign=top height=19>Describes what language the channel uses. By using this tag it is possible for RSS aggregators to group sites based on language.<br>描述了频道所使用的语言。</td>
        </tr>
        <tr>
            <td vAlign=top height=19>&lt;lastBuildDate&gt;</td>
            <td vAlign=top height=19>Defines the last date the channel was modified<br>定义频道最新一次改动的时间</td>
        </tr>
        <tr>
            <td vAlign=top height=19>&lt;managingEditor&gt;</td>
            <td vAlign=top height=19>Defines an e-mail address for the editor of the site<br>定义编辑站点人员的E-mail地址</td>
        </tr>
        <tr>
            <td vAlign=top height=19>&lt;pubDate&gt;</td>
            <td vAlign=top height=19>Defines the last publication date for the channel<br>定义频带最新的发布时间</td>
        </tr>
        <tr>
            <td vAlign=top height=19>&lt;rating&gt;</td>
            <td vAlign=top height=19>Parental control rating of the page<br>页面评估</td>
        </tr>
        <tr>
            <td vAlign=top height=19>&lt;skipDays&gt;</td>
            <td vAlign=top height=19>Defines days where it is unnecessary for RSS aggregators to update the feed</td>
        </tr>
        <tr>
            <td vAlign=top height=19>&lt;skipHours&gt;</td>
            <td vAlign=top height=19>Defines hours where it is unnecessary for RSS aggregators to update the feed</td>
        </tr>
        <tr>
            <td vAlign=top height=19>&lt;textInput&gt;</td>
            <td vAlign=top height=19>Creates a text input for the channel</td>
        </tr>
        <tr>
            <td vAlign=top height=19>&lt;ttl&gt;</td>
            <td vAlign=top height=19>(ttl = time to live) Defines how many minutes the channel can stay cached before refreshing<br>存活的有效时间</td>
        </tr>
        <tr>
            <td vAlign=top height=19>&lt;webMaster&gt;</td>
            <td vAlign=top height=19>Defines an e-mail address for the webmaster of the site<br>定义站张的邮件地址</td>
        </tr>
    </tbody>
</table>
<br>
<p class=title>RSS item 元素<br><small>翻译：Linyupark / 2006-04-24</small></p>
<p class=intro>The &lt;item&gt; element is where you link to and describe the update on your site.<br>&lt;item&gt;元素内是你网站连接和描述更新内容的地方。</p>
<p class=intro>With RSS 2.0 there are a lot of different options for the item element.<br>在RSS 2.0 item元素里有很多不同的可选内容</p>
<hr>
<h2>The &lt;item&gt; Element<br>&lt;item&gt;元素</h2>
<p>The RSS &lt;item&gt; is where updates are displayed. It is kind of like a headline for an article. &lt;item&gt; elements are created every time there is an update on your site that you would like displayed in your RSS feed.<br>&lt;item&gt;是显示RSS更新内容的地方。它像是文章的标题。当你的站点有更新时RSSfeed中的&lt;item&gt;元素就会被建立起来。</p>
<p>There are several optional &lt;item&gt; elements, but either the &lt;title&gt; <strong>or</strong> the &lt;description&gt; are required. <br>&lt;item&gt;元素里有几个可选的元素,但&lt;title&gt; <strong>或是</strong>&lt;description&gt;是必须有的。</p>
<p>A RSS &lt;item&gt; should include the &lt;title&gt;, &lt;link&gt; and &lt;description&gt; elements.<br>一个RSS的&lt;item&gt;应该包括 &lt;title&gt;, &lt;link&gt; 和 &lt;description&gt;元素</p>
<p>The first element is your news item's title. This should be a very short description of your site and your RSS feed: <br>第一个元素是项目的题目。应该用十分简短的描述：</p>
<pre>&lt;title&gt;W3Schools New RSS Tutorial&lt;/title&gt;</pre>
<p>The next element is the link to the part of your site the item is referring to:<br>接下来的元素项目所关联的连接：</p>
<div class=k>
<pre>&lt;link&gt;http://www.w3schools.com/rss&lt;/link&gt;</pre>
</div>
<p>The next line is the RSS feed description. This should describe your RSS feed item.<br>再下面的一行就是RSS feed的描述部分,这应该是描述你的RSS feed项目的。</p>
<pre>&lt;description&gt;W3Schools RSS Tutorial&lt;/description&gt;</pre>
<br>
<hr>
<h2>Optional Elements in &lt;item&gt;<br>可选的&lt;item&gt;元素 </h2>
<table class=ex cellSpacing=0 border=1>
    <tbody>
        <tr>
            <th vAlign=top align=left width="30%" height=17>Tag</th>
            <th vAlign=top align=left width="70%" height=17>Description</th>
        </tr>
        <tr>
            <td vAlign=top height=19>&lt;author&gt;</td>
            <td vAlign=top height=19>Defines the author of the item.<br>定义作者</td>
        </tr>
        <tr>
            <td vAlign=top height=19>&lt;category&gt;</td>
            <td vAlign=top height=19>Places the item in one or more of the channel categories.<br>类别</td>
        </tr>
        <tr>
            <td vAlign=top height=19>&lt;comments&gt;</td>
            <td vAlign=top height=19>An URL to a comment's page for the item.<br>针对项目的评论页URL</td>
        </tr>
        <tr>
            <td vAlign=top height=19>&lt;enclosure&gt;</td>
            <td vAlign=top height=19>Describes a media object related to the item<br>描述一个与项目有关的媒体对象</td>
        </tr>
        <tr>
            <td vAlign=top height=19>&lt;guid&gt;</td>
            <td vAlign=top height=19>GUID = Globally Unique Identifier. Defines a unique identifier to the item.针对项目定义独特的标志</td>
        </tr>
        <tr>
            <td vAlign=top height=19>&lt;pubDate&gt;</td>
            <td vAlign=top height=19>The publication date for the item.<br>项目发布时间</td>
        </tr>
        <tr>
            <td vAlign=top height=19>&lt;source&gt;</td>
            <td vAlign=top height=19>Is used to define a third party source.<br>转载地址（源地址）</td>
        </tr>
    </tbody>
</table>
<br>
<div id=record>
<p class=title>RSS发布<br><small>翻译：Linyupark / 2006-04-24</small></p>
<div class=content>
<p class=intro>Having a RSS feed is no good unless other people can see it. <br>光有RSS feed还是不够的，应该让别人能看到它</p>
<hr>
<h2>Publish Your RSS Feed<br>发布你的RSS feed</h2>
<p>Publishing and getting people to notice your RSS feed is as important as making one.<br>发布并让人们注意到的你RSS就和你制作它一样重要</p>
<p>First, put your rss.xml file on the internet. You can place it on the same server as your site.<br>首先，将你的RSS.xml文件放到你的站点服务器上。</p>
<p>Next, let people know you have a RSS feed. Register your feed with an aggregator.<br>然后，让人们知道你有一个RSSfeed.到相关的目录站上注册你的RSS（下面是一些国外知名的RSS发布站）</p>
<ul>
    <li><a href="http://www.syndic8.com/" target=_blank><u><font color=#0000ff>Syndic8</font></u></a>: The largest RSS directory. Syndicate has over 300,000 feeds listed. Register your feed <a href="http://www.syndic8.com/suggest.php?Mode=data" target=_blank><u><font color=#0000ff>here</font></u></a>.
    <li><a href="http://www.daypop.com/" target=_blank><u><font color=#0000ff>Daypop</font></u></a>: A large news oriented RSS aggregator. Over 50,000 news oriented feeds. Register your feed <a href="http://www.daypop.com/info/submit.htm" target=_blank><u><font color=#0000ff>here</font></u></a>.
    <li><a href="http://www.newsisfree.com/" target=_blank><u><font color=#0000ff>Newsisfree</font></u></a>: A news oriented RSS aggregator. Over 18,000 feeds. Register your feed <a href="http://www.newsisfree.com/faq.php" target=_blank><u><font color=#0000ff>here</font></u></a>.</li>
</ul>
<p>Then, place this <img alt="RSS Logo" src="http://www.netvtm.com/updata/rss.gif" border=0> and this <img alt="XML Logo" src="http://www.netvtm.com/updata/xml.gif" border=0> with URL's to a page that explains briefly how other people can view your RSS feed.<br>接着， 将这两个含有连接到你RSS地址的图片放到你站点的页面上，人们就可以看到你的RSS feed了 </p>
<hr>
<h2>Can I Manage my RSS Feed Myself?<br>我可以自行管理RSS feed吗？ </h2>
<p>The best way to be sure your RSS feed includes the things you want, and works the way you want, is to manage it yourself. But this can be very time consuming, especially for pages with a lot of updates.<br>如你想让RSS里包括一些你想要的东西或是想按你的想法来做，最好的办法就是你自己来管理它，但是这将是非常烦琐的，因为很多页有不同的东西要更新。</p>
<p>Your other alternative is to use a third party automated RSS.<br>还有种选择就是使用第三方的RSS自动生成器</p>
<hr>
<h2>Automated RSS<br>RSS自动生成 </h2>
<p>If you don't want to update your RSS feed yourself, there are tools and services you can use to automate it.<br>如果你不想自己来更新RSS，这有些工具可以为你服务。<br>===== 以下是几个工具的官方地址===== </p>
<p>One such service is <a href="http://www.myrsscreator.com/" target=_blank><u><font color=#0000ff>MyRSSCreator</font></u></a> (featured in "RSS for dummies"), who can offer an automated, reliable RSS service in just 10 minutes.</p>
<p>There are also free services such as <a href="http://www.feedfire.com/site/index.html" target=_blank><u><font color=#0000ff>FeedFire</font></u></a>, who offers free creation and distribution of RSS feeds.</p>
<p>For users who just need an easy RSS feed for their personal website, some of the most popular blog (Web Log) managers (like <a href="http://www.blogger.com/" target=_blank><u><font color=#0000ff>Blogger</font></u></a> and <a href="http://radio.userland.com/" target=_blank><u><font color=#0000ff>Radio</font></u></a>) offers built in automated RSS services.</p>
<hr>
<h2>Validate<br>校验 </h2>
<p>You can validate your RSS feed <a href="http://feedvalidator.org/" target=_blank><u><font color=#0000ff>here[校验地址]</font></u></a>. This validator supports all RSS versions.</p>
<br>
<p>&nbsp;</p>
<div id=record>
<p class=title>RSS阅读器<br><small>翻译：Linyupark / 2006-04-24</small></p>
<div class=content>
<p class=intro>A RSS reader gathers your news for you.<br>一个RSS阅读器可以为你收集新闻</p>
<p class=intro>RSS readers are available for many different devices and OS.<br>RSS阅读器可以在很多不同的设备和操作系统上运作</p>
<hr>
<h2>RSS Readers<br>[下面是国外的几款阅读器] </h2>
<p>There are a lot of different RSS readers. Some work as web services, and some are limited to windows (or Mac, PDA or UNIX). Here are a few I have tried and liked:</p>
<ul>
    <li><a href="http://www.newsgator.com/" target=_blank><u><font color=#0000ff>NewsGator Online</font></u></a> - An free online based RSS aggregator. NewsGator Online also includes synchronization with Outlook Edition, viewing content on TV with Media Center Edition, as well as the publication of blogs and headlines.<br>&nbsp;
    <li><a href="http://www.rssreader.com/" target=_blank><u><font color=#0000ff>RssReader</font></u></a> - A free Windows based RSS aggregator. RssReader supports RSS versions 0.9x, 1.0 and 2.0 as well as Atom 0.1, 0.2 and 0.3. <br>&nbsp;
    <li><a href="http://www.bradsoft.com/feeddemon/index.asp" target=_blank><u><font color=#0000ff>FeedDemon</font></u></a> - A great Windows based RSS aggregator. This is very easy to use and has a very orderly interface. But this is not freeware.<br>&nbsp;
    <li><a href="http://www.blogbot.com/" target=_blank><u><font color=#0000ff>blogbot</font></u></a> - A RSS aggregator plugin for your Outlook or Internet Explorer. The lite version for Internet Explorer is free.</li>
</ul>
<p>There are a <span lang=en-us></span>lot of other RSS readers out there. http://www.ourpla.net/cgi-bin/pikie.cgi?RssReaders has a big list of RSS readers, you can even add your own readers to this page or comment on the existing ones.</p>
</div>
</div>
</div>
</div>
</div>
</div>
<br><br>
<p id=TBPingURL>Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=704849</p>
<img src ="http://www.blogjava.net/simie/aggbug/130204.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/simie/" target="_blank">和田雨</a> 2007-07-14 00:37 <a href="http://www.blogjava.net/simie/archive/2007/07/14/130204.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAXP 专述</title><link>http://www.blogjava.net/simie/archive/2007/07/06/128540.html</link><dc:creator>和田雨</dc:creator><author>和田雨</author><pubDate>Fri, 06 Jul 2007 04:40:00 GMT</pubDate><guid>http://www.blogjava.net/simie/archive/2007/07/06/128540.html</guid><wfw:comment>http://www.blogjava.net/simie/comments/128540.html</wfw:comment><comments>http://www.blogjava.net/simie/archive/2007/07/06/128540.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/simie/comments/commentRss/128540.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/simie/services/trackbacks/128540.html</trackback:ping><description><![CDATA[<p>2000 年 11 月 01 日</p>
<blockquote>这是篇细探 JAXP，Sun 的 Java API for XML 的文章，帮助解除了有关 JAXP 本质和服务目的的疑惑。本文讲解了 JAXP 的基本概念，演示 XML 语法分析为什么需要 JAXP，并显示如何轻易更改 JAXP 使用的语法分析器。本文还进一步讲述了 SAX 和 DOM 这两个流行的与 JAXP 相关的 Java 和 XML API。</blockquote><!--start RESERVED FOR FUTURE USE INCLUDE FILES--><!-- include java script once we verify teams wants to use this and it will work on dbcs and cyrillic characters --><!--end RESERVED FOR FUTURE USE INCLUDE FILES-->
<p>Java 和 XML 在每一个技术领域都制造了新闻，并且对于软件开发人员来说，似乎是 1999 年和 2000 年最重要的发展。结果，Java 和 XML API 的数量激增。其中两个最流行的 DOM 和 SAX 还引起极大兴趣，而 JDOM 和数据绑定 API 也接踵而来。只透彻理解这些技术中的一个或两个就是一项艰巨任务，而正确使用所有这些技术就会使您成为专家。但在去年，另一个 API 给人留下了深刻印象，它就是 Sun 的 Java API for XML，通常称为 JAXP。如果考虑到 Sun 在其平台上还没有任何特定于 XML 的产品，那么这个进展就不足为奇。而令人惊奇的是人们对 JAXP 了解的缺乏。多数使用它的开发人员在他们所用的这个 API 的概念理解上都有错误。</p>
<p><a name=1><span class=atitle>什么是 JAXP？</span></a></p>
<p>本文假设您有 SAX 和 DOM 的基本知识。这里实在没有足够篇幅来解释 SAX、DOM 和 JAXP。如果您是 XML 语法分析的新手，那么可能要通过联机资源阅读 SAX 和 DOM，或者浏览我的书。（ <a href="http://www-128.ibm.com/developerworks/cn/xml/jaxp/index.html#resources"><u><font color=#996699>参考资源</font></u></a> 一节中有至 API 和我的书的链接。）获得基本知识后再看本文会比较好。 </p>
<br>
<table cellSpacing=0 cellPadding=0 width="100%" border=0>
    <tbody>
        <tr>
            <td><img height=1 alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%"><br><img height=6 alt="" src="http://www.ibm.com/i/c.gif" width=8 border=0></td>
        </tr>
    </tbody>
</table>
<table class=no-print cellSpacing=0 cellPadding=0 align=right>
    <tbody>
        <tr align=right>
            <td><img height=4 alt="" src="http://www.ibm.com/i/c.gif" width="100%"><br>
            <table cellSpacing=0 cellPadding=0 border=0>
                <tbody>
                    <tr>
                        <td vAlign=center><img height=16 alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width=16 border=0><br></td>
                        <td vAlign=top align=right><a class=fbox href="http://www-128.ibm.com/developerworks/cn/xml/jaxp/index.html#main"><strong><font color=#996699>回页首</font></strong></a></td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<br><br>
<p><a name=N10055><span class=atitle>API 还是抽象？</span></a></p>
<p>在讲解代码之前，介绍一些基本概念很重要。严格地说，JAXP 是 API，但是将其称为抽象层更准确。它不提供处理 XML 的新方式，不补充 SAX 或 DOM，也不向 Java 和 XML 处理提供新功能。（如果在这点上理解有误，则本文正好适合您！）它只是使通过 DOM 和 SAX 处理一些困难任务更容易。如果在使用 DOM 和 SAX API 时遇到特定于供应商的任务，它还使通过独立于供应商的方式处理这些任务成为可能。</p>
<p>虽然要分别讲述所有这些特性，但是真正需要掌握的是：JAXP <em>不提供语法分析功能</em> ！没有 SAX、DOM 或另一个 XML 语法分析 API，就 <em>无法分析 XML 语法</em> 。有很多人曾让我将 DOM、SAX 或 JDOM 与 JAXP 进行对比。但进行这些对比是不可能的，因为前三个 API 与 JAXP 的目的完全不同。SAX、DOM 和 JDOM 都分析 XML 语法。而 JAXP 却提供到达这些语法分析器和结果的方式。它自身不提供分析文档语法的新方法。如果要正确使用 JAXP，则一定要弄清这点。这将使您比其它 XML 开发人员领先一大截。 </p>
<p>如果仍然怀疑（或认为我故弄玄虚），请从 Sun 的 Web 站点下载 JAXP 分发（请参阅 <a href="http://www-128.ibm.com/developerworks/cn/xml/jaxp/index.html#resources"><u><font color=#996699>参考资料</font></u></a> 一节），然后就会知道基本 JAXP 是什么。在包括的 jar ( <code>jaxp.jar</code> ) 中 <em>只有六个类</em> ！这个 API 会有多难哪？所有这些类（ <code>javax.xml.parsers</code> 包的一部分）都位于现有语法分析器之上。这些类中的两个还用于错误处理。JAXP 比人们想象的要简单得多。那么，为什么还感到困惑哪？ </p>
<br>
<table cellSpacing=0 cellPadding=0 width="100%" border=0>
    <tbody>
        <tr>
            <td><img height=1 alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%"><br><img height=6 alt="" src="http://www.ibm.com/i/c.gif" width=8 border=0></td>
        </tr>
    </tbody>
</table>
<table class=no-print cellSpacing=0 cellPadding=0 align=right>
    <tbody>
        <tr align=right>
            <td><img height=4 alt="" src="http://www.ibm.com/i/c.gif" width="100%"><br>
            <table cellSpacing=0 cellPadding=0 border=0>
                <tbody>
                    <tr>
                        <td vAlign=center><img height=16 alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width=16 border=0><br></td>
                        <td vAlign=top align=right><a class=fbox href="http://www-128.ibm.com/developerworks/cn/xml/jaxp/index.html#main"><strong><font color=#996699>回页首</font></strong></a></td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<br><br>
<p><a name=N10079><span class=atitle>Sun 的 JAXP 和 Sun 的语法分析器</span></a></p>
<p>JAXP 下载时包括 Sun 的语法分析器。所有 parser 器类作为 <code>com.sun.xml.parser</code> 包和相关子包的一部分位于 <code>parser.jar</code> 档案中。应该知道，该语法分析器（代码名为 Crimson） <em>不</em> 是 JAXP 自身的一部分。它是 JAXP <em>版本</em>的一部分，但不是 JAXP <em>API</em> 的一部分。令人困惑吗？有一点。换这种方式想想：JDOM 与 Apache Xerces 语法分析器一起提供。该语法分析器不是 JDOM 的一部分，但由 JDOM 使用，所以包括它，以确保 JDOM 可以单独使用。JAXP 也是如此，但不象 JDOM 那样好表达：JAXP 与 Sun 的语法分析器一起提供，以便可以立即使用。但是，很多人将 Sun 的语法分析器中包括的类当成 JAXP API 的一部分。例如，新闻组中一个常见的问题是：&#8220;怎样使用 JAXP 中的 <code>XMLDocument</code> 类？其目的是什么？&#8221;这个答案可有些复杂。 </p>
<p>首先， <code>com.sun.xml.tree.XMLDocument</code> 类不是 JAXP 的一部分。它是 Sun 语法分析器的一部分。所以，这个问题从一开始就给人以误导。其次，JAXP 的整个意义在于在处理语法分析器时提供供应商独立性。使用 JAXP 的同一代码可以与 Sun 的 XML 语法分析器、Apache 的 Xerces XML 语法分析器和 Oracle 的 XML 语法分析器一起使用。而使用特定于 Sun 的类是个坏主意。这与 JAXP 的整个意义相背离。现在看出来这个问题怎样混淆概念了吗？语法分析器和 JAXP 发行版本（至少是 Sun 的版本）中的 API 被混为一谈，开发人员将其中一个的类和特性当成是另一个的了，反之亦然。 </p>
<br>
<table cellSpacing=0 cellPadding=0 width="100%" border=0>
    <tbody>
        <tr>
            <td><img height=1 alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%"><br><img height=6 alt="" src="http://www.ibm.com/i/c.gif" width=8 border=0></td>
        </tr>
    </tbody>
</table>
<table class=no-print cellSpacing=0 cellPadding=0 align=right>
    <tbody>
        <tr align=right>
            <td><img height=4 alt="" src="http://www.ibm.com/i/c.gif" width="100%"><br>
            <table cellSpacing=0 cellPadding=0 border=0>
                <tbody>
                    <tr>
                        <td vAlign=center><img height=16 alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width=16 border=0><br></td>
                        <td vAlign=top align=right><a class=fbox href="http://www-128.ibm.com/developerworks/cn/xml/jaxp/index.html#main"><strong><font color=#996699>回页首</font></strong></a></td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<br><br>
<p><a name=N1009E><span class=atitle>旧和新</span></a></p>
<p>关于 JAXP，最后需要指出的是：使用 JAXP 有一些缺陷。例如，JAXP 只支持 SAX 1.0 和 DOM 第一层规范。SAX 2.0 从 2000 年 5 月起就完成，DOM 第二层规范支持甚至在大多数语法分析器中存在更长时间。DOM 第二层规范还没有完成，但确实足够稳定以用于生产。这两个 API 的新版本都有重大改进，最明显的是对 XML 名称空间的支持。该支持还允许&#8220;XML Schema 确认&#8221;，这个与 XML 相关的另一热门技术。公平地说，当 JAXP 发布 1.0 最终发行版时，SAX 2.0 和 DOM 第一层规范都还没有完成。但是，由于没有包括这些新版本，确实为开发人员带来很大不便。</p>
<p>还可以使用 JAXP，但是也可以等待 JAXP 1.1，它支持 SAX 2.0 和 DOM第二层规范 。否则，将发现，JAXP 提供的优点以 SAX 和 DOM 最新版本中的功能为代价，并使应用程序更加难以编码。无论是否等待下一个 JAXP 发行版，都要留意这个问题。如果将 JAXP 与语法分析器一起使用，而语法分析器支持的 DOM 和 SAX 版本比 JAXP 支持的要高，则可能会有类路径问题。所以，事先留意一下，并且，一旦有 JAXP 1.1，马上升级。基本理解 JAXP 之后，让我们看一下 JAXP 依赖的 API：SAX 和 DOM。</p>
<br>
<table cellSpacing=0 cellPadding=0 width="100%" border=0>
    <tbody>
        <tr>
            <td><img height=1 alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%"><br><img height=6 alt="" src="http://www.ibm.com/i/c.gif" width=8 border=0></td>
        </tr>
    </tbody>
</table>
<table class=no-print cellSpacing=0 cellPadding=0 align=right>
    <tbody>
        <tr align=right>
            <td><img height=4 alt="" src="http://www.ibm.com/i/c.gif" width="100%"><br>
            <table cellSpacing=0 cellPadding=0 border=0>
                <tbody>
                    <tr>
                        <td vAlign=center><img height=16 alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width=16 border=0><br></td>
                        <td vAlign=top align=right><a class=fbox href="http://www-128.ibm.com/developerworks/cn/xml/jaxp/index.html#main"><strong><font color=#996699>回页首</font></strong></a></td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<br><br>
<p><a name=N100AA><span class=atitle>从 SAX 开始</span></a></p>
<p>SAX （Simple API for XML）是用于处理 XML 的事件驱动方法。它基本由许多回调函数组成。例如，每当 SAX 语法分析器遇到元素的开始标记时就调用 <code>startElement()</code> 。对于字符串，将调用 <code>characters()</code> 回调函数，然后在元素结束标记处调用 <code>endElement()</code> 。还有很多回调函数用于文档处理、错误和其它词汇结构。现在知道这是怎么回事了。SAX 程序员实现一个定义这些回调函数的 SAX 接口。SAX 还实现一个名为 <code>HandlerBase</code> 的类，该类实现所有这些回调函数，并提供所有这些回调方法的缺省空实现。（提到这一点是因为它在后面讲到的 DOM 中很重要。）SAX 开发人员只需扩展这个类，然后实现需要插入特定逻辑的方法。所以，SAX 的关键在于为这些不同的回调函数提供代码，然后允许语法分析器在适当的时候触发这些回调函数中的每一个。 </p>
<p>因此，典型的 SAX 过程如下：</p>
<ul>
    <li>用特定供应商的语法分析器实现创建一个 <code>SAXParser</code> 实例
    <li>注册回调实现（例如，通过使用扩展 <code>HandlerBase</code> 的类）
    <li>开始进行语法分析，然后在触发回调实现时等待 </li>
</ul>
<p>JAXP 的 SAX 组件提供执行所有这些步骤的简单方式。如果没有 JAXP，SAX 语法分析器要直接从供应商类（如 <code>org.apache.xerces.parsers.SAXParser</code> ）进行实例化，或者必须使用名为 <code>ParserFactory</code> 的帮助类。第一个方法的问题很明显：不独立于供应商。第二个方法的问题在于类厂需要一个自变量，即要使用的语法分析器类的字符串名称（还是那个 Apache 类 <code>org.apache.xerces.parsers.SAXParser</code> ）。可以通过将不同语法分析器作为 <code>String</code> 传递来更改语法分析器。使用这种方法不必更改任何 import 语句，但是还是要重新编译类。这显然不是最佳解决方案。如果能够不重新编译类而更改语法分析器，可能会简单得多，是不是这样呢？ </p>
<p>JAXP 提供了更好的替代方法：它允许将语法分析器作为 Java 系统属性来提供。当然，当从 Sun 下载版本时，将得到使用 Sun 语法分析器的 JAXP 实现。可以从 Apache XML Web 站点下载在 Apache Xerces 上构建其实现的相同 JAXP 接口。因此（无论哪一种情况），更改正在使用的语法分析器需要更改类路径设置，即从一种语法分析器实现更改到另一个，但是 <em>不</em>要求重新编译代码。这就是 JAXP 的魔力，或抽象性。 </p>
<p><a name=N100F3><span class=smalltitle><strong><font face=Arial>SAX 语法分析器一瞥</font></strong></span></a></p>
<p>JAXP <code>SAXParserFactory</code> 类是能够轻易更改语法分析器实现的关键所在。必须创建这个类的新实例（等一会将讲到）。创建新实例之后，类厂提供一个方法来获得支持 SAX 的语法分析器。在内部，JAXP 实现处理依赖于供应商的代码，使您的代码不受影响。这个类厂还提供其它一些优秀特性。 </p>
<p>除创建 SAX 语法分析器实例的基本工作之外，类厂还允许设置配置选项。这些选项影响所有通过类厂获得的语法分析器实例。JAXP 1.0 中两个可用的功能是设置名称空间敏感性 ( <code>setNamespaceAware</code> (boolean awareness))，和打开确认 ( <code>setValidating</code> (boolean validating))。请记住，一旦设置了这些选项，在调用该方法之后，它们将影响 <em>所有</em>从 类厂获得的实例。 </p>
<p>设置了类厂之后，调用 <code>newSAXParser()</code> 将返回一个随时可用的 JAXP <code>SAXParser</code> 类实例。这个类封装了一个下层的 SAX 语法分析器（SAX 类 <code>org.xml.sax.Parser</code> 的实例）。它还防止向语法分析器类添加任何特定于供应商的附加功能。（还记得以前对 <code>XmlDocument</code> 的讨论吗？）这个类可以开始进行实际的语法分析。以下清单显示如何创建、配置和使用 SAX 类厂。 </p>
<br><br><a name="Listing 1"><strong>清单 1. 使用 SAXParserFactory</strong></a><br>
<table cellSpacing=0 cellPadding=0 width="100%" border=0>
    <tbody>
        <tr>
            <td class=code-outline>
            <pre class=displaycode>import java.io.File;
            import java.io.IOException;
            import java.io.OutputStreamWriter;
            import java.io.Writer;
            // JAXP
            import javax.xml.parsers.FactoryConfigurationError;
            import javax.xml.parsers.ParserConfigurationException;
            import javax.xml.parsers.SAXParserFactory;
            import javax.xml.parsers.SAXParser;
            // SAX
            import org.xml.sax.AttributeList;
            import org.xml.sax.HandlerBase;
            import org.xml.sax.SAXException;
            public class TestSAXParsing {
            public static void main(String[] args) {
            try {
            if (args.length != 1) {
            System.err.println ("Usage: java TestSAXParsing [filename]");
            System.exit (1);
            }
            // 获得SAX 语法分析器类厂
            SAXParserFactory factory = SAXParserFactory.newInstance();
            //设置设置名称空间敏感性选项，关掉确认选项
            factory.setValidating(true);
            factory.setNamespaceAware(false);
            SAXParser parser = factory.newSAXParser();
            parser.parse(new File(args[0]), new MyHandler());
            } catch (ParserConfigurationException e) {
            System.out.println("The underlying parser does not support " +
            " the requested features.");
            } catch (FactoryConfigurationError e) {
            System.out.println("Error occurred obtaining SAX Parser Factory.");
            } catch (Exception e) {
            e.printStackTrace();
            }
            }
            }
            class MyHandler extends HandlerBase {
            //通过 DocumentHandler, ErrorHandler等实现的SAX回调函数
            }
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br>
<p>请注意，在这段代码中，在使用类厂时可能发生两个特定于 JAXP 的问题：无法获得或配置 SAX 类厂，以及无法配置 SAX 语法分析器。当无法获得 JAXP 实现中指定的语法分析器或系统属性时，通常会发生第一个问题 <code>FactoryConfigurationError</code> 。当正在使用的语法分析器中的特性不可用时，会发生第二个问题 <code>ParserConfigurationException</code> 。这两个问题都容易处理，应该不会对 JAXP 的使用造成任何困难。 </p>
<p>在获得类厂、关闭名称空间并打开&#8220;确认&#8221;之后，将获得 <code>SAXParser</code> ，然后开始语法分析。请注意， SAX 语法分析器的 <code>parse()</code> 方法取得前面提到的 SAX <code>HandlerBase</code> 类的一个实例。（可以通过完整的 Java 清单 <a href="http://www-128.ibm.com/developerworks/cn/xml/jaxp/TestSAXParsing.java"><u><font color=#996699>查看该类的实现</font></u></a> 。）还要传递要进行语法分析的文件。但是， <code>SAXParser</code> 所包含的远不止这一个方法。 </p>
<p><a name=N1014D><span class=smalltitle><strong><font face=Arial>使用 SAX 语法分析器</font></strong></span></a></p>
<p>获得 <code>SAXParser</code> 类的实例之后，除了向语法分析器传递 <code>File</code> 进行语法分析之外，还可以用它做更多的事。由于如今大型应用中的应用程序组件之间通信方式，&#8220;对象实例创建者就是其使用者&#8221;这样的假定并不总是安全的。换句话说，一个组件可能创建 <code>SAXParser</code> 实例，而另一组件（可能由另一开发人员编码）可能需要使用那个实例。由于这个原因，提供了一些方法来确定语法分析器的设置。执行此任务的两个方法是 <code>isValidating()</code> ，它通知调用程序：语法分析器将要、或不要执行&#8220;确认&#8221;，以及 <code>isNamespaceAware()</code> ，它返回一个指示，说明语法分析器可以或不可以处理 XML 文档中的名称空间。虽然这些方法能提供有关语法分析器可以执行功能的信息，但是无法更改这些特性。必须在语法分析器类厂级别执行该操作。 </p>
<p>另外，有多种方法来请求对文档进行语法分析。除了只接受 <code>File</code> 和 SAX <code>HandlerBase</code> 实例，SAXParser 的 <code>parse()</code> 方法还能以 <code>String</code> 形式接受 SAX <code>InputSource</code> 、Java <code>InputStream</code> 或 URL，所有这些都要与 <code>HandlerBase</code> 实例一起提供。所以，不同类型的输入文档可以用不同方式的语法分析来处理。 </p>
<p>最后，可以直接通过 SAXParser 的 <code>getParser()</code> 方法获得和使用下层的 SAX 语法分析器（ <code>org.xml.sax.Parser</code> 的实例）。获得这个下层实例之后，就可以获得通常的 SAX 方法。下一个清单显示 <code>SAXParser</code> 类（这个 JAXP 中 SAX 语法分析的核心类）的各种使用示例。 </p>
<br><br><a name="Listing 2"><strong>清单 2. 使用 JAXP SAXParser</strong></a><br>
<table cellSpacing=0 cellPadding=0 width="100%" border=0>
    <tbody>
        <tr>
            <td class=code-outline>
            <pre class=displaycode> //获得SAXP的一个实例
            SAXParser saxParser = saxFactory.newSAXParser();
            //查看是否支持 Validate 选项
            boolean isValidating = saxParser.isValidating();
            //查看是否支持 namespace 选项
            boolean isNamespaceAware = saxParser.isNamespaceAware();
            // 运用一个File 和一个SAX HandlerBase 的实例进行多种形式的语法分析
            saxParser.parse(new File(args[0]), myHandlerBaseInstance);
            // 运用一个 SAX InputSource实例 和一个 SAX HandlerBase 实例
            saxParser.parse(mySaxInputSource, myHandlerBaseInstance);
            //运用一个 InputStream 实例和一个SAX HandlerBase 实例
            saxParser.parse(myInputStream, myHandlerBaseInstance);
            // 运用一个 URI 和一个SAX HandlerBase 实例
            saxParser.parse("http://www.newInstance.com/xml/doc.xml", myHandlerBaseInstance);
            //获得底层的（封装）SAX 语法分析器
            org.xml.sax.Parser parser = saxParser.getParser();
            //利用底层的语法分析器
            parser.setContentHandler(myContentHandlerInstance);
            parser.setErrorHandler(myErrorHandlerInstance);
            parser.parse(new org.xml.sax.InputSource(args[0]));
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br>
<p>目前为止，关于 SAX 已经讲了很多，但是还没有揭示任何不寻常或令人惊奇的东西。事实上，JAXP 的功能很少，特别是当 SAX 也牵涉进来时。这很好，因为有最少的功能性意味着代码可移植性更强，并可以由其他开发人员与任何与 SAX 兼容的 XML 语法分析器一起使用，无论是免费（通过开放源码，希望如此）还是通过商业途径。就是这样。在 JAXP 中使用 SAX 没有更多的东西。如果已经知道 SAX，那么现在已经掌握大约 98% 的内容。只需学习两个新类和两个 Java 异常，您就可以开始了。如果从没使用过 SAX，那也很简单，现在就可以开始。</p>
<br>
<table cellSpacing=0 cellPadding=0 width="100%" border=0>
    <tbody>
        <tr>
            <td><img height=1 alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%"><br><img height=6 alt="" src="http://www.ibm.com/i/c.gif" width=8 border=0></td>
        </tr>
    </tbody>
</table>
<table class=no-print cellSpacing=0 cellPadding=0 align=right>
    <tbody>
        <tr align=right>
            <td><img height=4 alt="" src="http://www.ibm.com/i/c.gif" width="100%"><br>
            <table cellSpacing=0 cellPadding=0 border=0>
                <tbody>
                    <tr>
                        <td vAlign=center><img height=16 alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width=16 border=0><br></td>
                        <td vAlign=top align=right><a class=fbox href="http://www-128.ibm.com/developerworks/cn/xml/jaxp/index.html#main"><strong><font color=#996699>回页首</font></strong></a></td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<br><br>
<p><a name=N101A5><span class=atitle>处理 DOM</span></a></p>
<p>如果要休息以迎接 DOM 挑战，那么先别休息。在 JAXP 中使用 DOM 的过程与 SAX 几乎相同，所要做的全部只是更改两个类名和一个返回类型，这样就差不多了。如果理解 SAX 的工作原理和 DOM 是什么，则不会有任何问题。</p>
<p>DOM 和 SAX 的主要差异是它们的 API 结构。SAX 包含一个基于事件的回调函数集，而 DOM 有一个内存中的树状结构。换句话说，在 SAX 中，从不需要操作数据结构（除非开发人员手工创建）。因此，SAX 不提供修改 XML 文档的功能。而 DOM 正好提供这种类型的功能。 <code>org.w3c.dom.Document</code> 类表示 XML 文档，它由表示元素、属性和其它 XML 结构的 DOM <em>节点</em> 组成。所以，JAXP 无需触发 SAX 回调，它只负责从语法分析返回一个 DOM <code>Document</code> 对象。 </p>
<p><a name=N101BC><span class=smalltitle><strong><font face=Arial>DOM 语法分析器类厂一瞥</font></strong></span></a></p>
<p>基本理解 DOM 以及 DOM 和 SAX 的差异之后，就没什么好说的了。以下代码看起来与 SAX 代码类似。首先，获得 <code>DocumentBuilderFactory</code> （与 SAX 中的方式相同)。然后，配置类厂来处理确认和名称空间（与 SAX 中的方式相同)。下一步，从类厂中检索 <code>DocumentBuilder</code> （它与 <code>SAXParser</code> 类似）（与 SAX 中的方式相同. . . 啊，您都知道了）。然后，就可以进行语法分析了，产生的 DOM <code>Document</code> 对象传递给打印 DOM 树的方法。 </p>
<br><br><a name="Listing 3"><strong>清单 3. 使用文档构建器类厂</strong></a><br>
<table cellSpacing=0 cellPadding=0 width="100%" border=0>
    <tbody>
        <tr>
            <td class=code-outline>
            <pre class=displaycode>import java.io.File;
            import java.io.IOException;
            import java.io.OutputStreamWriter;
            import java.io.Writer;
            // JAXP
            import javax.xml.parsers.FactoryConfigurationError;
            import javax.xml.parsers.ParserConfigurationException;
            import javax.xml.parsers.DocumentBuilderFactory;
            import javax.xml.parsers.DocumentBuilder;
            // DOM
            import org.w3c.dom.Document;
            import org.w3c.dom.DocumentType;
            import org.w3c.dom.NamedNodeMap;
            import org.w3c.dom.Node;
            import org.w3c.dom.NodeList;
            public class TestDOMParsing {
            public static void main(String[] args) {
            try {
            if (args.length != 1) {
            System.err.println ("Usage: java TestDOMParsing [filename]");
            System.exit (1);
            }
            // 获得 Document Builder Factory
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            //打开确认选项，关掉名称空间敏感性选项。
            factory.setValidating(true);
            factory.setNamespaceAware(false);
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document doc = builder.parse(new File(args[0]));
            // 从DOM 数中打印文档，并加一初始空格
            printNode(doc, "");
            // 在这里也可以对 DOM 文档进行修改
            } catch (ParserConfigurationException e) {
            System.out.println("The underlying parser does not support the requested features.");
            } catch (FactoryConfigurationError e) {
            System.out.println("Error occurred obtaining Document Builder Factory.");
            } catch (Exception e) {
            e.printStackTrace();
            }
            }
            private static void printNode(Node node, String indent) {
            // 打印 DOM 树
            }
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br>
<p>此代码中可能会出现两个不同的问题（与 JAXP 中的 SAX 类似）： <code>FactoryConfigurationError</code> 和 <code>ParserConfigurationException</code> 。每一个的原因与 SAX 中的相同。不是实现类 ( <code>FactoryConfigurationError</code> ) 中有问题，就是语法分析器不支持请求的特性 ( <code>ParserConfigurationException</code> )。DOM 和 SAX 的唯一差异是：在 DOM 中，用 <code>DocumentBuilderFactory</code> 替代 <code>SAXParserFactory</code> ，用 <code>DocumentBuilder</code> 替代 <code>SAXParser</code> 。就这么简单！（可以 <a href="http://www-128.ibm.com/developerworks/cn/xml/jaxp/TestDOMParsing.java"><u><font color=#5c81a7>查看完整代码清单</font></u></a> ，该清单包括用于打印 DOM 树的方法。） </p>
<p><a name=N10206><span class=smalltitle><strong><font face=Arial>使用 DOM 语法分析器</font></strong></span></a></p>
<p>有了 DOM 类厂之后，就可以获得 <code>DocumentBuilder</code> 实例。 <code>DocumentBuilder</code> 实例可以使用的方法与 SAX 的非常类似。主要差异是 <code>parse()</code> 的变种不需要 <code>HandlerBase</code> 类的实例。它们返回表示语法分析之后的 XML 文档的 DOM <code>Document</code> 实例。另一唯一不同之处是：为类似于 SAX 的功能提供了两个方法：用 SAX <code>ErrorHandler</code> 实现来处理语法分析时可能出现的问题的 <code>setErrorHandler()</code> ，和用 SAX <code>EntityResolver</code> 实现来处理实体解析的 <code>setEntityResolver()</code> 。如果不熟悉这些概念，则需要通过联机或在我的书中学习 SAX。以下清单显示使用这些方法的示例。 </p>
<br><br><a name="Listing 4"><strong>清单 4. 使用 JAXP DocumentBuilder</strong></a><br>
<table cellSpacing=0 cellPadding=0 width="100%" border=0>
    <tbody>
        <tr>
            <td class=code-outline>
            <pre class=displaycode>    //获得一个 DocumentBuilder 实例
            DocumentBuilder builder = builderFactory.newDocumentBuilder();
            //查看是否支持 Validate 选项
            boolean isValidating = builder.isValidating();
            //查看是否支持 namespace 选项
            boolean isNamespaceAware = builder.isNamespaceAware();
            // 设置一个 SAX ErrorHandler
            builder.setErrorHandler(myErrorHandlerImpl);
            // 设置一个 SAX EntityResolver
            builder.setEntityResolver(myEntityResolverImpl);
            // 运用多种方法对 file 进行语法分析
            Document doc = builder.parse(new File(args[0]));
            // 运用 SAX InputSource
            Document doc = builder.parse(mySaxInputSource);
            // 运用 InputStream
            Document doc = builder.parse(myInputStream, myHandlerBaseInstance);
            // 运用 URI
            Document doc = builder.parse("http://www.newInstance.com/xml/doc.xml");
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br>
<p>是不是感到 DOM 这一节有些令人厌烦？有这种想法的不止您一个，写 DOM 代码有些令人厌烦是因为它是直接取得所学的 SAX 知识，然后将其用于 DOM。因此，和朋友、同事打赌吧，说使用 JAXP 只是小菜一碟。</p>
<br>
<table cellSpacing=0 cellPadding=0 width="100%" border=0>
    <tbody>
        <tr>
            <td><img height=1 alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%"><br><img height=6 alt="" src="http://www.ibm.com/i/c.gif" width=8 border=0></td>
        </tr>
    </tbody>
</table>
<table class=no-print cellSpacing=0 cellPadding=0 align=right>
    <tbody>
        <tr align=right>
            <td><img height=4 alt="" src="http://www.ibm.com/i/c.gif" width="100%"><br>
            <table cellSpacing=0 cellPadding=0 border=0>
                <tbody>
                    <tr>
                        <td vAlign=center><img height=16 alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width=16 border=0><br></td>
                        <td vAlign=top align=right><a class=fbox href="http://www-128.ibm.com/developerworks/cn/xml/jaxp/index.html#main"><strong><font color=#996699>回页首</font></strong></a></td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<br><br>
<p><a name=N10240><span class=atitle>更改语法分析器</span></a></p>
<p>最后要探讨的主题是 JAXP 轻易更改类厂类使用的语法分析器的能力。更改 JAXP 使用的语法分析器实际意味着更改 类厂，因为所有 <code>SAXParser</code> 和 <code>DocumentBuilder</code> 实例都来自这些类厂。既然确定装入哪个语法分析器的是类厂，因此，必须更改类厂。可以通过设置 Java 系统属性 <code>javax.xml.parsers.SAXParserFactory</code> 来更改要使用的 <code>SAXParserFactory</code> 接口实现。如果没有定义该属性，则返回缺省实现（供应商指定的任何语法分析器)。相同原理适用于 <code>DocumentBuilderFactory</code> 实现。在这种情况下，将查询 <code>javax.xml.parsers.DocumentBuilderFactory</code> 系统属性。就这么简单，我们已经学完了！这就是 SAXP 的全部：提供到 SAX 的挂钩，提供到 DOM 的挂钩，并允许轻易更改语法分析器。 </p>
<br>
<table cellSpacing=0 cellPadding=0 width="100%" border=0>
    <tbody>
        <tr>
            <td><img height=1 alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%"><br><img height=6 alt="" src="http://www.ibm.com/i/c.gif" width=8 border=0></td>
        </tr>
    </tbody>
</table>
<table class=no-print cellSpacing=0 cellPadding=0 align=right>
    <tbody>
        <tr align=right>
            <td><img height=4 alt="" src="http://www.ibm.com/i/c.gif" width="100%"><br>
            <table cellSpacing=0 cellPadding=0 border=0>
                <tbody>
                    <tr>
                        <td vAlign=center><img height=16 alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width=16 border=0><br></td>
                        <td vAlign=top align=right><a class=fbox href="http://www-128.ibm.com/developerworks/cn/xml/jaxp/index.html#main"><strong><font color=#996699>回页首</font></strong></a></td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<br><br>
<p><a name=N10261><span class=atitle>结束语</span></a></p>
<p>如您所见，没多少复杂的东西。更改系统属性，通过类厂、而不是语法分析器或构建器来设置&#8220;确认&#8221;，以及弄清楚JAXP实际上不是人们通常所认为的那样，这些是使用 JAXP 的最困难部分。除了没有 SAX 2.0 和 DOM第二层规范支持之外，JAXP 在两个流行的 Java 和 XML API 之上提供一个有帮助的可插入层。它使代码独立于供应商，并允许不编译语法分析代码而更改语法分析器。那么，从 Sun、Apache XML 或其它方便之处下载 JAXP，并使用它吧！继续关注 JAXP 1.1，并增加对 SAX 2 和 DOM 2、XSLT 及更多内容的支持。您将在这里获得第一手新闻，所以，请关注 <em>developerWorks</em>。 </p>
<br><br>
<p><a name=resources><span class=atitle>参考资料 </span></a></p>
<ul>
    <li>您可以参阅本文在 developerWorks 全球站点上的 <a href="http://www.ibm.com/developerworks/library/x-jaxp/index.html?S_TACT=105AGX52&amp;S_CMP=cn-a-x"><u><font color=#5c81a7>英文原文</font></u></a>. <br><br>
    <li>阅读 <a href="http://java.sun.com/xml/download.html"><u><font color=#5c81a7>JAXP 1.0 规范(英)</font></u></a>，以获得详细信息。 <br><br>
    <li>在 Sun 的 <a href="http://java.sun.com/xml"><u><font color=#996699>Java and XML 总部(英)</font></u></a>查看 Sun 的所有关于 XML 的动向。 <br><br>
    <li>在 <a href="http://xml.apache.org/"><u><font color=#5c81a7>Apache XML</font></u></a> 获得 Apache JAXP 实现。 <br><br>
    <li>查找更多 API 内幕。在 <a href="http://www.megginson.com/SAX"><u><font color=#5c81a7>SAX Web 站点(英)</font></u></a> 从 SAX 2 for Java 开始。 <br><br>
    <li>要查看 SAX 支持的另一个 XML，在 <a href="http://www.w3c.org/DOM"><u><font color=#5c81a7>W3C Web 站点</font></u></a>看一下 DOM。 <br><br>
    <li>要得到 490 多个页面的 XML 专家建议，请查看 O'Reilly 出版的 <a href="http://www.oreilly.com/catalog/javaxml"><u><font color=#5c81a7>Java 与 XML(英)</font></u></a>，和 Brett 关于最热门技术的书籍。 <br><br>
    <li>加入 <em>developerWorks</em>的 Java 语言开发人员 <a href="news://news.software.ibm.com/ibm.software.developerworks.xml.javatools"><u><font color=#5c81a7>XML 工具和 API 新闻组</font></u></a> <br><br>
    <li>需要更基本的 XML 介绍吗？尝试 <em>developerWorks</em>的 <a href="http://www6.software.ibm.com/reg/devworks/dw-xmlintro-i/?dwzone=xml"><u><font color=#5c81a7>XML 教程介绍(英)</font></u></a>和 <a href="http://www2.software.ibm.com/developerworks/education.nsf/xml-onlinecourse-bytitle"><u><font color=#5c81a7>其它教育文章</font></u></a>，它们包括最基本的主题。 <br></li>
</ul>
<br><br>
<p><a name=author><span class=atitle>关于作者</span></a></p>
<table cellSpacing=0 cellPadding=0 width="100%" border=0>
    <tbody>
        <tr>
            <td colSpan=3><img height=5 alt="" src="http://www.ibm.com/i/c.gif" width="100%"></td>
        </tr>
        <tr vAlign=top align=left>
            <td>
            <p>&#160;</p>
            </td>
            <td><img height=5 alt="" src="http://www.ibm.com/i/c.gif" width=4></td>
            <td width="100%">
            <p>Brett McLaughlin 是 Lutris Technologies 的 Enhydra 策略顾问，他致力于研究分布式系统体系结构。他是 <a href="http://www.oreilly.com/catalog/javaxml"><u><font color=#5c81a7>Java 和 XML</font></u></a> (O'Reilly) 的作者。他还参与了诸如 Java Servlet、Enterprise JavaBeans 技术、XML 和B2B应用程序等技术的研究。最近，他与 Jason Hunter 一起创建了 <a href="http://www.jdom.org/"><u><font color=#5c81a7>JDOM</font></u></a> 项目，该项目为在 Java 应用程序中使用 XML 提供了一个简单的 API。他还是 Apache Cocoon 项目、EJBoss EJB 服务器的主要开发人员，并且是 Apache Turbine 项目的共同创始人。Brett 目前在专家组从事 JAXP 1.1 的规范和发行。可以通过 <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#98;&#114;&#101;&#116;&#116;&#64;&#110;&#101;&#119;&#73;&#110;&#115;&#116;&#97;&#110;&#99;&#101;&#46;&#99;&#111;&#109;&#63;&#99;&#99;&#61;&#98;&#114;&#101;&#116;&#116;&#64;&#110;&#101;&#119;&#73;&#110;&#115;&#116;&#97;&#110;&#99;&#101;&#46;&#99;&#111;&#109;"><u><font color=#5c81a7>brett@newInstance.com</font></u></a> 与他联系。 </p>
            </td>
        </tr>
    </tbody>
</table>
<img src ="http://www.blogjava.net/simie/aggbug/128540.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/simie/" target="_blank">和田雨</a> 2007-07-06 12:40 <a href="http://www.blogjava.net/simie/archive/2007/07/06/128540.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java中四种操作xml方式的比较</title><link>http://www.blogjava.net/simie/archive/2007/07/06/128525.html</link><dc:creator>和田雨</dc:creator><author>和田雨</author><pubDate>Fri, 06 Jul 2007 03:31:00 GMT</pubDate><guid>http://www.blogjava.net/simie/archive/2007/07/06/128525.html</guid><wfw:comment>http://www.blogjava.net/simie/comments/128525.html</wfw:comment><comments>http://www.blogjava.net/simie/archive/2007/07/06/128525.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/simie/comments/commentRss/128525.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/simie/services/trackbacks/128525.html</trackback:ping><description><![CDATA[&nbsp;<strong>1. 介绍</strong>
<p>&nbsp;&nbsp;&nbsp; <strong>1）DOM（JAXP Crimson解析器）</strong></p>
<p>&nbsp;&nbsp;&nbsp; DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构，然后才能做任何工作。由于它是基于信息层次的，因而DOM被认为是基于树或基于对象的。DOM以及广义的基于树的处理具有几个优点。首先，由于树在内存中是持久的，因此可以修改它以便应用程序能对数据和结构作出更改。它还可以在任何时候在树中上下导航，而不是像SAX那样是一次性的处理。DOM使用起来也要简单得多。</p>
<p>&nbsp;&nbsp;&nbsp; <strong>2）SAX</strong></p>
<p>&nbsp;&nbsp;&nbsp; SAX处理的优点非常类似于流媒体的优点。分析能够立即开始，而不是等待所有的数据被处理。而且，由于应用程序只是在读取数据时检查数据，因此不需要将数据存储在内存中。这对于大型文档来说是个巨大的优点。事实上，应用程序甚至不必解析整个文档；它可以在某个条件得到满足时停止解析。一般来说，SAX还比它的替代者DOM快许多。</p>
<p>&nbsp;&nbsp;&nbsp; 选择DOM还是选择SAX？ 对于需要自己编写代码来处理XML文档的开发人员来说， 选择DOM还是SAX解析模型是一个非常重要的设计决策。 DOM采用建立树形结构的方式访问XML文档，而SAX采用的事件模型。</p>
<p>&nbsp;&nbsp;&nbsp; DOM解析器把XML文档转化为一个包含其内容的树，并可以对树进行遍历。用DOM解析模型的优点是编程容易，开发人员只需要调用建树的指令，然后利用navigation APIs访问所需的树节点来完成任务。可以很容易的添加和修改树中的元素。然而由于使用DOM解析器的时候需要处理整个XML文档，所以对性能和内存的要求比较高，尤其是遇到很大的XML文件的时候。由于它的遍历能力，DOM解析器常用于XML文档需要频繁的改变的服务中。</p>
<p>&nbsp;&nbsp;&nbsp; SAX解析器采用了基于事件的模型，它在解析XML文档的时候可以触发一系列的事件，当发现给定的tag的时候，它可以激活一个回调方法，告诉该方法制定的标签已经找到。SAX对内存的要求通常会比较低，因为它让开发人员自己来决定所要处理的tag.特别是当开发人员只需要处理文档中所包含的部分数据时，SAX这种扩展能力得到了更好的体现。但用SAX解析器的时候编码工作会比较困难，而且很难同时访问同一个文档中的多处不同数据。</p>
<p>&nbsp;&nbsp;&nbsp; <strong>3）JDOM </strong><a href="http://www.jdom.org/"><strong><u><font color=#0000ff>http://www.jdom.org</font></u></strong></a></p>
<p>&nbsp;&nbsp;&nbsp; JDOM的目的是成为Java特定文档模型，它简化与XML的交互并且比使用DOM实现更快。由于是第一个Java特定模型，JDOM一直得到大力推广和促进。正在考虑通过&#8220;Java规范请求JSR-102&#8221;将它最终用作&#8220;Java标准扩展&#8221;。从2000年初就已经开始了JDOM开发。</p>
<p>&nbsp;&nbsp;&nbsp; JDOM与DOM主要有两方面不同。首先，JDOM仅使用具体类而不使用接口。这在某些方面简化了API，但是也限制了灵活性。第二，API大量使用了Collections类，简化了那些已经熟悉这些类的Java开发者的使用。</p>
<p>&nbsp;&nbsp;&nbsp; JDOM文档声明其目的是&#8220;使用20%（或更少）的精力解决80%（或更多）Java/XML问题&#8221;（根据学习曲线假定为20%）。JDOM对于大多数Java/XML应用程序来说当然是有用的，并且大多数开发者发现API比DOM容易理解得多。JDOM还包括对程序行为的相当广泛检查以防止用户做任何在XML中无意义的事。然而，它仍需要您充分理解XML以便做一些超出基本的工作（或者甚至理解某些情况下的错误）。这也许是比学习DOM或JDOM接口都更有意义的工作。</p>
<p>&nbsp;&nbsp;&nbsp; JDOM自身不包含解析器。它通常使用SAX2解析器来解析和验证输入XML文档（尽管它还可以将以前构造的DOM表示作为输入）。它包含一些转换器以将JDOM表示输出成SAX2事件流、DOM模型或XML文本文档。JDOM是在Apache许可证变体下发布的开放源码。</p>
<p>&nbsp;&nbsp;&nbsp; <strong>4）DOM4J </strong><a href="http://dom4j.sourceforge.net/"><strong><u><font color=#0000ff>http://dom4j.sourceforge.net</font></u></strong></a></p>
<p>&nbsp;&nbsp;&nbsp; 虽然DOM4J代表了完全独立的开发结果，但最初，它是JDOM的一种智能分支。它合并了许多超出基本XML文档表示的功能，包括集成的XPath支持、XML Schema支持以及用于大文档或流化文档的基于事件的处理。它还提供了构建文档表示的选项，它通过DOM4J API和标准DOM接口具有并行访问功能。从2000下半年开始，它就一直处于开发之中。</p>
<p>&nbsp;&nbsp;&nbsp; 为支持所有这些功能，DOM4J使用接口和抽象基本类方法。DOM4J大量使用了API中的Collections类，但是在许多情况下，它还提供一些替代方法以允许更好的性能或更直接的编码方法。直接好处是，虽然DOM4J付出了更复杂的API的代价，但是它提供了比JDOM大得多的灵活性。</p>
<p>&nbsp;&nbsp;&nbsp; 在添加灵活性、XPath集成和对大文档处理的目标时，DOM4J的目标与JDOM是一样的：针对Java开发者的易用性和直观操作。它还致力于成为比JDOM更完整的解决方案，实现在本质上处理所有Java/XML问题的目标。在完成该目标时，它比JDOM更少强调防止不正确的应用程序行为。</p>
<p>&nbsp;&nbsp;&nbsp; DOM4J是一个非常非常优秀的Java XML API，具有性能优异、功能强大和极端易用使用的特点，同时它也是一个开放源代码的软件。如今你可以看到越来越多的Java软件都在使用DOM4J来读写XML，特别值得一提的是连Sun的JAXM也在用DOM4J.</p>
<p>&nbsp;&nbsp;&nbsp;<strong> 2&#8230;&#8230; 比较</strong></p>
<p>&nbsp;&nbsp;&nbsp; 1）DOM4J性能最好，连Sun的JAXM也在用DOM4J.目前许多开源项目中大量采用DOM4J，例如大名鼎鼎的Hibernate也用DOM4J来读取XML配置文件。如果不考虑可移植性，那就采用DOM4J.</p>
<p>&nbsp;&nbsp;&nbsp; 2）JDOM和DOM在性能测试时表现不佳，在测试10M文档时内存溢出。在小文档情况下还值得考虑使用DOM和JDOM.虽然JDOM的开发者已经说明他们期望在正式发行版前专注性能问题，但是从性能观点来看，它确实没有值得推荐之处。另外，DOM仍是一个非常好的选择。DOM实现广泛应用于多种编程语言。它还是许多其它与XML相关的标准的基础，因为它正式获得W3C推荐（与基于非标准的Java模型相对），所以在某些类型的项目中可能也需要它（如在JavaScript中使用DOM）。</p>
<p>&nbsp;&nbsp;&nbsp; 3）SAX表现较好，这要依赖于它特定的解析方式－事件驱动。一个SAX检测即将到来的XML流，但并没有载入到内存（当然当XML流被读入时，会有部分文档暂时隐藏在内存中）。</p>
3. <span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">四种</span><span lang=EN-US style="COLOR: black"><font face="Times New Roman">xml</font></span><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">操作方式的基本使用方法</span><span lang=EN-US style="COLOR: black"><font face="Times New Roman"> <br><br>xml</font></span><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件：<br clear=all></span><span lang=EN-US style="COLOR: black"><font face="Times New Roman"><br style="mso-special-character: line-break"><br style="mso-special-character: line-break"><o:p></o:p></font></span>
<div style="BORDER-RIGHT: #cccccc 0.75pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: #cccccc 0.75pt solid; PADDING-LEFT: 4pt; BACKGROUND: #fdfddf; PADDING-BOTTOM: 4pt; BORDER-LEFT: #cccccc 0.75pt solid; PADDING-TOP: 4pt; BORDER-BOTTOM: #cccccc 0.75pt solid">
<p class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; PADDING-LEFT: 0cm; PADDING-BOTTOM: 0cm; MARGIN: 3.75pt 15pt; BORDER-LEFT: medium none; WORD-BREAK: break-all; PADDING-TOP: 0cm; BORDER-BOTTOM: medium none; mso-border-alt: solid #CCCCCC .75pt; mso-padding-alt: 4.0pt 4.0pt 4.0pt 4.0pt"><font size=3><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">＜</span></em></strong><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">?xml version="1.0" encoding="GB2312"?</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">＞</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt"> <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">＜</span></em></strong><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">RESULT</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">＞</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt"> <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">＜</span></em></strong><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">VALUE</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">＞</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt"> <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt"> </span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">＜</span></em></strong><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">NO</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">＞</span></em></strong><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">A1234</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">＜</span></em></strong><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">/NO</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">＞</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt"> <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt"> </span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">＜</span></em></strong><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">ADDR</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">＞四川省</span></em></strong><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">XX</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">县</span></em></strong><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">XX</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">镇</span></em></strong><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">XX</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">路</span></em></strong><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">X</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">段</span></em></strong><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">XX</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">号＜</span></em></strong><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">/ADDR</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">＞</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt"> <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">＜</span></em></strong><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">/VALUE</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">＞</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt"> <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">＜</span></em></strong><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">VALUE</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">＞</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt"> <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt"> </span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">＜</span></em></strong><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">NO</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">＞</span></em></strong><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">B1234</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">＜</span></em></strong><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">/NO</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">＞</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt"> <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt"> </span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　＜</span></em></strong><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">ADDR</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">＞四川省</span></em></strong><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">XX</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">市</span></em></strong><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">XX</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">乡</span></em></strong><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">XX</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">村</span></em></strong><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">XX</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">组＜</span></em></strong><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">/ADDR</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">＞</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt"> <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">＜</span></em></strong><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">/VALUE</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">＞</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt"> <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">＜</span></em></strong><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">/RESULT</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">＞</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt"> <br><br>1</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">）</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">DOM <br><br>import java.io.*; <br>import java.util.*; <br>import org.w3c.dom.*; <br>import javax.xml.parsers.*; <br><br>public class MyXMLReader{ <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">public static void main(String arge[]){ <br><br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">long lasting =System.currentTimeMillis(); <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">try{ <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">File f=new File("data_10k.xml"); <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">DocumentBuilder builder=factory.newDocumentBuilder(); <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">Document doc = builder.parse(f); <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">NodeList nl = doc.getElementsByTagName("VALUE"); <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　　</span></em></strong><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">for (int i=0;i</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">＜</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">nl.getLength();i++){ <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　　　</span></em></strong><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">System.out.print("</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">车牌号码</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">:" + doc.getElementsByTagName("NO").item(i).getFirstChild().getNodeValue()); <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　　　</span></em></strong><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">System.out.println("</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">车主地址</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">:" + doc.getElementsByTagName("ADDR").item(i).getFirstChild().getNodeValue()); <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt"> </span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">} <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">}catch(Exception e){ <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">e.printStackTrace(); <br>} <br><br>2</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">）</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">SAX <br><br>import org.xml.sax.*; <br>import org.xml.sax.helpers.*; <br>import javax.xml.parsers.*; <br><br>public class MyXMLReader extends DefaultHandler { <br><br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">java.util.Stack tags = new java.util.Stack(); <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">public MyXMLReader() { <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">super(); <br>} <br><br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">public static void main(String args[]) { <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">long lasting = System.currentTimeMillis(); <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">try { <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">SAXParserFactory sf = SAXParserFactory.newInstance(); <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">SAXParser sp = sf.newSAXParser(); <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">MyXMLReader reader = new MyXMLReader(); <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">sp.parse(new InputSource("data_10k.xml"), reader); <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">} catch (Exception e) { <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">e.printStackTrace(); <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">} <br><br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　</span></em></strong><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">System.out.println("</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">运行时间：</span></em></strong><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">" + (System.currentTimeMillis() - lasting) + "</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">毫秒</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">");} <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">public void characters(char ch[], int start, int length) throws SAXException { <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">String tag = (String) tags.peek(); <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">if (tag.equals("NO")) { <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　　</span></em></strong><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">System.out.print("</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">车牌号码：</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">" + new String(ch, start, length)); <br>} <br>if (tag.equals("ADDR")) { <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　</span></em></strong><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">System.out.println("</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">地址</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">:" + new String(ch, start, length)); <br>} <br>} <br><br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">public void startElement(String uri,String localName,String qName,Attributes attrs) { <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">tags.push(qName);} <br>} <br><br>3</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">）</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt"> JDOM <br><br>import java.io.*; <br>import java.util.*; <br>import org.jdom.*; <br>import org.jdom.input.*; <br><br>public class MyXMLReader { <br><br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">public static void main(String arge[]) { <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">long lasting = System.currentTimeMillis(); <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">try { <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">SAXBuilder builder = new SAXBuilder(); <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">Document doc = builder.build(new File("data_10k.xml")); <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">Element foo = doc.getRootElement(); <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">List allChildren = foo.getChildren(); <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　　</span></em></strong><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">for(int i=0;i</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">＜</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">allChildren.size();i++) { <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　　　</span></em></strong><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">System.out.print("</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">车牌号码</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">:" + ((Element)allChildren.get(i)).getChild("NO").getText()); <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　　　</span></em></strong><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">System.out.println("</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">车主地址</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">:" + ((Element)allChildren.get(i)).getChild("ADDR").getText()); <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">} <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">} catch (Exception e) { <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">e.printStackTrace(); <br>} <br><br>} <br><br>4</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">）</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">DOM4J <br><br>import java.io.*; <br>import java.util.*; <br>import org.dom4j.*; <br>import org.dom4j.io.*; <br><br>public class MyXMLReader { <br><br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">public static void main(String arge[]) { <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">long lasting = System.currentTimeMillis(); <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">try { <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">File f = new File("data_10k.xml"); <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">SAXReader reader = new SAXReader(); <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">Document doc = reader.read(f); <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">Element root = doc.getRootElement(); <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">Element foo; <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">for (Iterator i = root.elementIterator("VALUE"); i.hasNext()<v:shapetype id=_x0000_t75 stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"> <v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype><v:shape id=_x0000_i1025 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape>{ <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">foo = (Element) i.next(); <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　　　</span></em></strong><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">System.out.print("</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">车牌号码</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">:" + foo.elementText("NO")); <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　　　</span></em></strong><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">System.out.println("</span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">车主地址</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">:" + foo.elementText("ADDR")); <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">} <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　</span></em></strong></font><font size=3><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt">} catch (Exception e) { <br></span></em></strong><strong><em><span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">　　　</span></em></strong></font><strong><em><span lang=EN-US style="COLOR: black; FONT-FAMILY: Tahoma; mso-bidi-font-size: 10.5pt"><font size=3>e.printStackTrace(); <br>} <br>) <o:p></o:p></font></span></em></strong></p>
</div>
<img src ="http://www.blogjava.net/simie/aggbug/128525.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/simie/" target="_blank">和田雨</a> 2007-07-06 11:31 <a href="http://www.blogjava.net/simie/archive/2007/07/06/128525.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>