﻿<?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-bob-文章分类-xml</title><link>http://www.blogjava.net/keweibo/category/25831.html</link><description>一专多能  Java,Powerbuilder,Delphi</description><language>zh-cn</language><lastBuildDate>Sun, 28 Nov 2010 12:28:46 GMT</lastBuildDate><pubDate>Sun, 28 Nov 2010 12:28:46 GMT</pubDate><ttl>60</ttl><item><title>SAX 解析 </title><link>http://www.blogjava.net/keweibo/articles/339060.html</link><dc:creator>KE</dc:creator><author>KE</author><pubDate>Thu, 25 Nov 2010 12:47:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/339060.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/339060.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/339060.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/339060.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/339060.html</trackback:ping><description><![CDATA[<br />
1. SAX ( Simple Application interface for XML ), 是一组程序设计接口，采用 observer 模式，将XML文件视为一个文字流的数据，在读取XML 元素时触发一系列的事件<br />
<br />
2. 使用DOM 时是将xml 文件解析为一个树状结构，并对树中的节点进行操作<br />
使用SAX 加载XML文件时，他的操作像打开一个&#8220;顺序的文件字符流&#8221;，在读到XML元素的开始标记，结尾标记和内容标记时将产生一系列的事件<br />
如一个简单的XML文件：&lt;hello&gt;&lt;message&gt;hello XML!&lt;/message&gt;&lt;/hello&gt;<br />
会相应的触发：startDocument, startElement, characters, endElement, endDocument, 只需编写这些事件处理程序就可以解析XML文件了<br />
<br />
3. SAX 可以高效的使用内存，因为SAX 只是顺序的读取XML 文件的内容，并不会将XML 文件完全加载，这样就比DOM 的处理效率高<br />
但SAX 只能读取XML 文件的内容，而不能更改XML 的内容，也不能随机访问XML 元素 <br />
<br />
4. 在SAX 中有4个处理器是要实现的：ContentHandler，DTDHandler，EntityResolver，ErrorHandler，以处理不同的事件，这是比较麻烦的，<br />
幸好SAX 定义了一个 DefaultHandler 类把这几个实现了，我们只需在 DefaultHandler中定义事件处理方法，然后注册到XMLReader，而SAXParser封装了XMLReader的实现类，<br />
SAXParser又是由SAXParserFactory提供的，所以我们实际用到的类只有：SAXParserFactory，SAXParser，DefaultHandler<br />
<br />
5. SAX 的解析步骤：<br />
（1）写一个类继承 DefaultHandler, 实现自己的事件处理方法<br />
（2）在主程序中建立 SAXParserFactory<br />
（3）可以设置这个factory 的参数<br />
（4）从这个factory 得到SAXParser<br />
（5）解析XML文件<br />
<br />
例子：<br />
<br />
XML 文件：hr.xml<br />
&lt;?xml version="1.0" encoding="GB2312" ?&gt; <br />
&lt;!-- 个人履历表--&gt; <br />
&lt;resume&gt;<br />
&lt;person id="01"&gt;<br />
&lt;name&gt;张三&lt;/name&gt; <br />
&lt;birthday&gt;03/24/1975&lt;/birthday&gt; <br />
&lt;phone&gt;1111-1111&lt;/phone&gt; <br />
&lt;address&gt;大连&lt;/address&gt;<br />
&lt;/person&gt; <br />
&lt;person id="02"&gt;<br />
&lt;name&gt;李四&lt;/name&gt; <br />
&lt;birthday&gt;9/26/1978&lt;/birthday&gt; <br />
&lt;phone&gt;2222-2222&lt;/phone&gt; <br />
&lt;address&gt;南京&lt;/address&gt;<br />
&lt;/person&gt; <br />
&lt;person id="03"&gt;<br />
&lt;name&gt;王五&lt;/name&gt; <br />
&lt;birthday&gt;11/09/1979&lt;/birthday&gt; <br />
&lt;phone&gt;3333-3333&lt;/phone&gt; <br />
&lt;address&gt;武汉&lt;/address&gt;<br />
&lt;/person&gt;<br />
&lt;/resume&gt; <br />
<br />
<br />
import javax.xml.parsers.*;<br />
import org.xml.sax.*;<br />
import org.xml.sax.helpers.*;<br />
<br />
public class MySaxParser extends DefaultHandler {<br />
public static void main( String[] args ){<br />
try{<br />
// 创建一个handler<br />
DefaultHandler dh = new MySaxParser();<br />
// 创建SAXParserFactory<br />
SAXParserFactory spf = SAXParserFactory.newInstance();<br />
// 从factory 中得到SAXParser<br />
SAXParser sp = spf.newSAXParser();<br />
// 用自定义的handler 解析xml<br />
sp.parse( "08_02.xml", dh );<br />
}catch( Exception e ){<br />
e.printStackTrace();<br />
}<br />
}<br />
public void startDocument(){<br />
<br />
}<br />
/**<br />
* 当开始一个元素时打印出元素名和此元素的所有属性<br />
*/<br />
public void startElement(String uri,<br />
String localName,<br />
String qName,<br />
Attributes attributes)<br />
{<br />
System.out.print( qName + ":" ); <br />
int len = 0;<br />
len = attributes.getLength();<br />
if( len &gt; 0 ){<br />
System.out.print( "\t" + "attributes: " );<br />
for( int i=0; i&lt;len; i++ )<br />
System.out.print( attributes.getQName(i) + "=" + attributes.getValue(i) + "\t" );<br />
//System.out.println(); <br />
} <br />
}<br />
/**<br />
* 打印出元素内容<br />
*/<br />
public void characters(char[] ch,<br />
int start,<br />
int length)<br />
{<br />
String s = String.valueOf( ch, start, length );<br />
System.out.print( s );<br />
}<br />
public void endElement(String uri,<br />
String localName,<br />
String qName)<br />
{<br />
<br />
}<br />
public void endDocument(){<br />
<br />
}<br />
}<br />
<img src ="http://www.blogjava.net/keweibo/aggbug/339060.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">KE</a> 2010-11-25 20:47 <a href="http://www.blogjava.net/keweibo/articles/339060.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>XML schema 中 elementFormDefault</title><link>http://www.blogjava.net/keweibo/articles/159688.html</link><dc:creator>KE</dc:creator><author>KE</author><pubDate>Sun, 11 Nov 2007 03:30:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/159688.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/159688.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/159688.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/159688.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/159688.html</trackback:ping><description><![CDATA[一个&nbsp;XML&nbsp;schema&nbsp;中&nbsp;elementFormDefault="？"&nbsp;这一属性用来指示&nbsp;XML&nbsp;Schema&nbsp;处理程序把这个&nbsp;XML&nbsp;schema&nbsp;中定义的元素或者类型放到哪个命名空间。
<p>
一个schema中声明的元素或者类型只能归到两个命名空间中的某一个去，这两个是，无名命名空间和由targetSchema属性指明的目标命名空间。
而targetSchema属性只能在xs：schema的定义中声明，因而，一个schema中的定义的元素或类型只可能归属于一个有名命名空间（但是
还有可能归属于无名命名空间）。</p>
<p>
当elementFormDefault="qualified"&nbsp;时，所有全局元素的子元素将被以缺省方式放到目标命名空间，但是全局元素或者类型将被
放到目标命名空间；而当elementFormDefault="unqualified"&nbsp;时，所有全局元素的子元素将被以缺省方式放到无名命名空间。
而属性的命名空间类似地由attributeFormDefault="？"来指明。</p>
<p> 需要明白的是，elementFormDefault="？"&nbsp;是有作用域的，并且是被继承的，除非在子定义中覆盖父定义。</p>
<p> 下面三个例子说明了elementFormDefault的使用效果。红色表示属于已命名空间的元素，蓝色表示属于未命名空间的元素。</p>
<p> 1.定义了目标命名空间，&nbsp;全局elementFormDefault=&#8220;unqualified&#8221;。这时除了全局元素或者类型将归于目标命名空间外，局部元素将归于无名命名空间。</p>
<p> <u>unqualified.xsd</u></p>
<p> &lt;?xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"?&gt;<br />
&lt;xs:schema&nbsp;xmlns:xs="<a class="contentlink" target="_blank" href="http://www.w3.org/2001/XMLSchema%22">http://www.w3.org/2001/XMLSchema"</a>&nbsp;<font color="red">targetNamespace="aaaa"&nbsp;elementFormDefault="unqualified"</font>&nbsp;attributeFormDefault="unqualified"&gt;<br />
&nbsp;&lt;xs:element&nbsp;name="c"&gt;<br />
&nbsp;&nbsp;&lt;xs:complexType&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;xs:sequence&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;xs:element&nbsp;name="c1"&nbsp;type="xs:double"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;xs:element&nbsp;name="c2"&nbsp;type="xs:string"/&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;/xs:sequence&gt;<br />
&nbsp;&nbsp;&lt;/xs:complexType&gt;<br />
&nbsp;&lt;/xs:element&gt;<br />
&lt;/xs:schema&gt;</p>
<p> <u>unqualified.xml</u></p>
<p> &lt;?xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"?&gt;<br />
<font color="red">&lt;n:c&nbsp;xmlns:n="aaaa"</font>&nbsp;xmlns:xsi="<a class="contentlink" target="_blank" href="http://www.w3.org/2001/XMLSchema-instance%22">http://www.w3.org/2001/XMLSchema-instance"</a>&nbsp;xsi:schemaLocation="aaaa&nbsp;unqualified.xsd"&gt;<br />
&nbsp;<font color="blue">&lt;c1&gt;</font>3.141593E0<font color="blue">&lt;/c1&gt;</font><br />
&nbsp;<font color="blue">&lt;c2&gt;</font>String<font color="blue">&lt;/c2&gt;</font><br />
<font color="red">&lt;/n:c&gt;</font></p>
<p> 2.&nbsp;定义了目标命名空间，&nbsp;全局elementFormDefault=&#8220;qualified&#8221;。这时全局元素或者类型将归于目标命名空间，局部元素将以缺省方式归于目标命名空间。</p>
<p> <u>qualified.xsd</u></p>
<p> &lt;?xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"?&gt;<br />
&lt;xs:schema&nbsp;xmlns:xs="<a class="contentlink" target="_blank" href="http://www.w3.org/2001/XMLSchema%22">http://www.w3.org/2001/XMLSchema"</a>&nbsp;<font color="red">targetNamespace="aaaa"&nbsp;elementFormDefault="qualified"</font>&nbsp;attributeFormDefault="unqualified"&gt;<br />
&nbsp;&lt;xs:element&nbsp;name="c"&gt;<br />
&nbsp;&nbsp;&lt;xs:complexType&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;xs:sequence&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;xs:element&nbsp;name="c1"&nbsp;type="xs:double"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;xs:element&nbsp;name="c2"&nbsp;type="xs:string"/&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;/xs:sequence&gt;<br />
&nbsp;&nbsp;&lt;/xs:complexType&gt;<br />
&nbsp;&lt;/xs:element&gt;<br />
&lt;/xs:schema&gt;</p>
<p> <u>qualified.xml</u></p>
<p> &lt;?xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"?&gt;<br />
<font color="red">&lt;c&nbsp;xmlns="aaaa"</font>&nbsp;xmlns:xsi="<a class="contentlink" target="_blank" href="http://www.w3.org/2001/XMLSchema-instance%22">http://www.w3.org/2001/XMLSchema-instance"</a>&nbsp;xsi:schemaLocation="aaaa&nbsp;qualified.xsd"&gt;<br />
&nbsp;<font color="red">&lt;c1&gt;</font>3.141593E0<font color="red">&lt;/c1&gt;</font><br />
&nbsp;<font color="red">&lt;c2&gt;</font>String<font color="red">&lt;/c2&gt;</font><br />
<font color="red">&lt;/c&gt;</font></p>
<p>
3.&nbsp;定义了目标命名空间，&nbsp;全局elementFormDefault=&#8220;unqualified&#8221;。这时全局元素（c）或者类型将归于目标命名空间。
局部元素（c1，c2）以缺省方式归于无名命名空间。局部元素（c3）在局部定义中使用form=&#8220;qualified&#8221;覆盖全局设定的
unqualified，这使得c3归于目标命名空间（如果它有子元素，子元素将以缺省方式归于目标命名空间）。</p>
<p> <u>qualified2.xsd</u></p>
<p> &lt;?xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"?&gt;<br />
&lt;xs:schema&nbsp;xmlns:xs="<a class="contentlink" target="_blank" href="http://www.w3.org/2001/XMLSchema%22">http://www.w3.org/2001/XMLSchema"</a>&nbsp;<font color="red">targetNamespace="aaaa"&nbsp;elementFormDefault="unqualified"</font>&nbsp;attributeFormDefault="unqualified"&gt;<br />
&nbsp;&lt;xs:element&nbsp;name="c"&gt;<br />
&nbsp;&nbsp;&lt;xs:complexType&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;xs:sequence&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;xs:element&nbsp;name="c1"&nbsp;type="xs:double"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;xs:element&nbsp;name="c2"&nbsp;type="xs:string"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;xs:element&nbsp;name="c3"&nbsp;type="xs:integer"&nbsp;<font color="red">form="qualified"</font>/&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;/xs:sequence&gt;<br />
&nbsp;&nbsp;&lt;/xs:complexType&gt;<br />
&nbsp;&lt;/xs:element&gt;<br />
&lt;/xs:schema&gt;</p>
<p> <br />
<u>qualified2.xml</u></p>
<p> &lt;?xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"?&gt;<br />
<font color="red">&lt;n:c&nbsp;xmlns:n="aaaa"</font>&nbsp;xmlns:xsi="<a class="contentlink" target="_blank" href="http://www.w3.org/2001/XMLSchema-instance%22">http://www.w3.org/2001/XMLSchema-instance"</a>&nbsp;xsi:schemaLocation="aaaa&nbsp;qualified2.xsd"&gt;<br />
&nbsp;<font color="blue">&lt;c1&gt;</font>3.141593E0<font color="blue">&lt;/c1&gt;</font><br />
&nbsp;<font color="blue">&lt;c2&gt;</font>String<font color="blue">&lt;/c2&gt;</font><br />
&nbsp;<font color="red">&lt;n:c3&gt;</font>0<font color="red">&lt;/n:c3&gt;</font><br />
<font color="red">&lt;/n:c&gt;</font></p>
<p><font color="red">转 : http://bbs.xml.org.cn/dispbbs.asp?boardID=23&amp;ID=25672<br />
</font></p>
<img src ="http://www.blogjava.net/keweibo/aggbug/159688.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">KE</a> 2007-11-11 11:30 <a href="http://www.blogjava.net/keweibo/articles/159688.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>XML解析器</title><link>http://www.blogjava.net/keweibo/articles/149603.html</link><dc:creator>KE</dc:creator><author>KE</author><pubDate>Sat, 29 Sep 2007 08:27:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/149603.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/149603.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/149603.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/149603.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/149603.html</trackback:ping><description><![CDATA[<span style="color: red;">出处:http://www.webjx.com/htmldata/2007-06-30/1183208042.html<br />
</span>
<p><strong>如需读取、更新、创建或者操作某个XML文档，则需要XML解析器。</strong></p>
<p>实例</p>
<p><strong>解析XML文件 - 跨浏览器的实例</strong> </p>
<p>本例是一个跨浏览器的实例，把某个XML文档("note.xml")载入XML解析器。 </p>
<p class="code">&lt;html&gt;<br />
&lt;body&gt;<br />
&lt;script
type="text/vbscript"&gt;<br />
set
xmlDoc=CreateObject("Microsoft.XMLDOM")<br />
xmlDoc.async="false"<br />
xmlDoc.load("/example/xmle/xmle_xml_note.xml")<br />
document.write("&lt;h1&gt;Traversing
the XML nodes&lt;/h1&gt;")<br />
for each x in
xmlDoc.documentElement.childNodes<br />
document.write("&lt;b&gt;" &amp; x.nodename
&amp; "&lt;/b&gt;")<br />
document.write(":
")<br />
document.write(x.text)<br />
document.write("&lt;br&gt;&lt;br&gt;")<br />
next<br />
&lt;/script&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</p>
<p><strong>解析XML字符串 - 跨浏览器的实例</strong> </p>
<p>本例是一个跨浏览器的实例，展示如何载入并解析某个XML字符串。 </p>
<p class="code">&lt;html&gt;<br />
&lt;body&gt;<br />
&lt;script
type="text/javascript"&gt;<br />
var xmlDoc = new
ActiveXObject("Microsoft.XMLDOM")<br />
xmlDoc.async="false"<br />
xmlDoc.load("/example/xmle/xmle_xml_note.xml")<br />
document.write<br />
("The
first XML element in the file contains:
")<br />
document.write<br />
(xmlDoc.documentElement.childNodes.item(0).text)<br />
&lt;/script&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</p>
<p><strong>解析一个XML文档</strong></p>
<p>如需操作某个XML文档，您需要XML解析器。解析器会将文档载入电脑的内存中。一旦文档被载入，可使用DOM对其数据进行操作。DOM把XML作为一颗树来处理。</p>
<p>微软的XML解析器与Mozilla浏览器中使用的解析器是有差异的。在本教程中，我们会为您展示如何创建可工作于IE和Mozilla浏览器中的跨浏览器脚本。</p>
<p><strong>微软的XML解析器</strong></p>
<p>微软的XML解析器是存在于IE 5.0或更高版本中的COM组件。一旦你安装了IE，就可使用脚本来利用解析器了。</p>
<p>微软的XML解析器支持所有必要的功能，来遍历节点树，访问节点以及它们的属性值，插入并删除节点，并将节点数转换回XML。</p>
<p>如需创建微软XML解析器的一个实例，请使用下面的代码：</p>
<p class="code">JavaScript:<br />
var xmlDoc=new
ActiveXObject("Microsoft.XMLDOM");<br />
VBScript:<br />
set
xmlDoc=CreateObject("Microsoft.XMLDOM")<br />
ASP:<br />
set
xmlDoc=Server.CreateObject("Microsoft.XMLDOM")</p>
<p>下面的代码段可向微软的XML解析器载入一个已有的XML文档("note.xml")：</p>
<p class="code">var xmlDoc=new
ActiveXObject("Microsoft.XMLDOM");<br />
xmlDoc.async="false";<br />
xmlDoc.load("note.xml");</p>
<p>上面的脚本的第一行创建了XML解析器的一个实例。第二行关闭了同步载入，这样可以确保在文档被完全载入前解析器不会继续执行。第三行会告知解析器载入名为"note.xml"的XML的文档。</p>
<p><strong>Mozilla、Firefox以及Opera中的XML解析器</strong></p>
<p>Mozilla浏览器的XML解析器支持所有必要的功能，来遍历节点树，访问节点以及它们的属性值，插入并删除节点，并将节点树转换回XML。</p>
<p>如需创建Mozilla浏览器的XML解析器的一个实例，请使用下面的代码：</p>
<p class="code">JavaScript:<br />
var
xmlDoc=document.implementation.createDocument("ns","root",null);</p>
<p>第一个参数，ns，定义用于XML文档的命名空间（namespace）。第二个参数，root，是XML文件中的XML根元素。第三个参数，null，一般总是null，这是由于目前还没有用到这个参数。</p>
<p>下面的代码段可向Mozilla浏览器的XML解析器载入一个已有的XML文档("note.xml")：</p>
<p class="code">var
xmlDoc=document.implementation.createDocument("","",null);<br />
xmlDoc.load("note.xml");</p>
<p>上面的脚本的第一行创建了XML解析器的一个实例。第二行会告知解析器载入名为"note.xml"的XML的文档。</p>
<p><strong>解析某个XML文件 - 跨浏览器的实例</strong></p>
<p>下面的例子是一个跨浏览器的实例，向XML解析器载入了某个已有的XML文档("note.xml")：</p>
<p class="code">&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;script
type="text/javascript"&gt;<br />
var xmlDoc;<br />
function loadXML()<br />
{<br />
// 用于 IE
的代码：<br />
if (window.ActiveXObject)<br />
&nbsp; {<br />
&nbsp; xmlDoc=new
ActiveXObject("Microsoft.XMLDOM");<br />
&nbsp; xmlDoc.async=false;<br />
&nbsp;
xmlDoc.load("note.xml");<br />
&nbsp; getmessage();<br />
&nbsp; }<br />
// 用于 Mozilla, Firefox,
Opera, 等浏览器的代码：<br />
else if (document.implementation
&amp;&amp;<br />
document.implementation.createDocument)<br />
&nbsp; {<br />
&nbsp;
xmlDoc=document.implementation.createDocument("","",null);<br />
&nbsp;
xmlDoc.load("note.xml");<br />
&nbsp; xmlDoc.onload=getmessage;<br />
&nbsp; }<br />
else<br />
&nbsp;
{<br />
&nbsp; alert('Your browser cannot handle this script');<br />
&nbsp; }<br />
}<br />
function
getmessage()<br />
{<br />
document.getElementById("to").innerHTML=<br />
xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue;<br />
document.getElementById("from").innerHTML=<br />
xmlDoc.getElementsByTagName("from")[0].childNodes[0].nodeValue;<br />
document.getElementById("message").innerHTML=<br />
xmlDoc.getElementsByTagName("body")[0].childNodes[0].nodeValue;<br />
}<br />
&lt;/script&gt;<br />
&lt;/head&gt;<br />
&lt;body
onload="loadXML()"&gt;<br />
&lt;h1&gt;W3Schools Internal
Note&lt;/h1&gt;<br />
&lt;p&gt;&lt;b&gt;To:&lt;/b&gt; &lt;span
id="to"&gt;&lt;/span&gt;&lt;br /&gt;<br />
&lt;b&gt;From:&lt;/b&gt; &lt;span
id="from"&gt;&lt;/span&gt;&lt;br /&gt;<br />
&lt;b&gt;Message:&lt;/b&gt; &lt;span
id="message"&gt;&lt;/span&gt;<br />
&lt;/p&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</p>
<p>输出：</p>
<p class="code">W3Schools Internal Note<br />
To: Tove<br />
From: Jani<br />
Message:
Don't forget me this weekend!</p>
<p><strong>重要的注释</strong></p>
<p>如需从某个XML元素（比如&lt;from&gt;Jani&lt;/from&gt;）中提取文本（比如Jani），请使用下面的语法：</p>
<p class="code">getElementsByTagName("from")[0].childNodes[0].nodeValue</p>
<p>重要事项：getElementsByTagName会返回一个节点数组。此数组含有XML文档中拥有指定名称的所有元素。在这例子中，只有一个"from"元素，但是仍然需要设定数组的下标(
[0] )。</p>
<p><strong>解析一个XML字符串 - 跨浏览器的实例</strong></p>
<p>下面的代码是一个跨浏览器的实例，向我们展示了如何加载和解析某个XML字符串：</p>
<p class="code">&lt;html&gt;<br />
&lt;body&gt;<br />
&lt;script
type="text/javascript"&gt;<br />
var
text="&lt;note&gt;";<br />
text=text+"&lt;to&gt;Tove&lt;/to&gt;";<br />
text=text+"&lt;from&gt;Jani&lt;/from&gt;";<br />
text=text+"&lt;heading&gt;Reminder&lt;/heading&gt;";<br />
text=text+"&lt;body&gt;Don't
forget me this weekend!&lt;/body&gt;";<br />
text=text+"&lt;/note&gt;";<br />
// 用于 IE
的代码：<br />
if (window.ActiveXObject)<br />
&nbsp; {<br />
&nbsp; var doc=new
ActiveXObject("Microsoft.XMLDOM");<br />
&nbsp; doc.async="false";<br />
&nbsp;
doc.loadXML(text);<br />
&nbsp; }<br />
// 用于 Mozilla, Firefox, Opera,
等浏览器的代码：<br />
else<br />
&nbsp; {<br />
&nbsp; var parser=new DOMParser();<br />
&nbsp; var
doc=parser.parseFromString(text,"text/xml");<br />
&nbsp; }<br />
// documentElement
提交根元素：<br />
var x=doc.documentElement;<br />
document.write("Text of first child
element:
");<br />
document.write(x.childNodes[0].childNodes[0].nodeValue);<br />
document.write("&lt;br
/&gt;");<br />
document.write("Text of second child element:
");<br />
document.write(x.childNodes[1].childNodes[0].nodeValue);<br />
&lt;/script&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</p>
<p>输出：</p>
<p class="code">Text of first child element: Tove<br />
Text of second child element:
Jani</p>
<p>注释：Internet Explorer使用loadXML()方法解析XML字符串，而Mozilla浏览器使用DOMParser对象。</p>
<br />
<img src ="http://www.blogjava.net/keweibo/aggbug/149603.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">KE</a> 2007-09-29 16:27 <a href="http://www.blogjava.net/keweibo/articles/149603.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>