﻿<?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-肥熊熊-随笔分类-XML/XSLT</title><link>http://www.blogjava.net/fatbear/category/35944.html</link><description>得到多少又失去了什么 </description><language>zh-cn</language><lastBuildDate>Thu, 13 Nov 2008 05:55:31 GMT</lastBuildDate><pubDate>Thu, 13 Nov 2008 05:55:31 GMT</pubDate><ttl>60</ttl><item><title>【转】解析xml文件获取encoding的值</title><link>http://www.blogjava.net/fatbear/archive/2008/11/13/240250.html</link><dc:creator>fatbear</dc:creator><author>fatbear</author><pubDate>Thu, 13 Nov 2008 02:33:00 GMT</pubDate><guid>http://www.blogjava.net/fatbear/archive/2008/11/13/240250.html</guid><wfw:comment>http://www.blogjava.net/fatbear/comments/240250.html</wfw:comment><comments>http://www.blogjava.net/fatbear/archive/2008/11/13/240250.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fatbear/comments/commentRss/240250.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fatbear/services/trackbacks/240250.html</trackback:ping><description><![CDATA[转自http://faq.csdn.net/read/207889.html<br />
<br />
为&nbsp;DOM&nbsp;Level&nbsp;3&nbsp;而完成的一项重要任务是：通过加入新的可以查询缺少的&nbsp;XMLInfoset&nbsp;信息的方法，使&nbsp;DOM&nbsp;数据模型与&nbsp;XML&nbsp;Information&nbsp;Set（Infoset）相匹配。例如，现在可以通过&nbsp;Document&nbsp;接口（它被映射到&nbsp;Infoset&nbsp;文档信息项）查询和修改储存在一个&nbsp;XML&nbsp;声明中的信息，例如&nbsp;version、standalone&nbsp;和&nbsp;encoding。类似地，基本&nbsp;URI&nbsp;和声明基本&nbsp;URI&nbsp;属性是根据&nbsp;XML&nbsp;Base&nbsp;处理的，它们被放在&nbsp;Node&nbsp;接口中。您还可以获取&nbsp;XML&nbsp;Infoset&nbsp;元素内容的&nbsp;whitespace&nbsp;属性。这个属性表明一个&nbsp;Text&nbsp;节点是否只包含可以被忽略的空白。可以通过&nbsp;Text&nbsp;接口（它映射到&nbsp;XML&nbsp;Inforset&nbsp;字符信息项）获得这个属性。清单1展示了在&nbsp;Java&nbsp;语言绑定中这个接口中的实际方法签名。 <br />
<br />
清单1.&nbsp;在&nbsp;Java&nbsp;语言绑定的方法签名 <br />
<br />
//&nbsp;XML&nbsp;Declaration&nbsp;information&nbsp;on <br />
//&nbsp;the&nbsp;org.w3c.dom.Document&nbsp;interface <br />
public&nbsp;String&nbsp;getXmlEncoding(); <br />
public&nbsp;void&nbsp;setXmlEncoding(String&nbsp;xmlEncoding); <br />
public&nbsp;boolean&nbsp;getXmlStandalone(); <br />
public&nbsp;void&nbsp;setXmlStandalone(boolean&nbsp;xmlStandalone) <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throws&nbsp;DOMException; <br />
public&nbsp;String&nbsp;getXmlVersion(); <br />
public&nbsp;void&nbsp;setXmlVersion(String&nbsp;xmlVersion) <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throws&nbsp;DOMException; <br />
<br />
//&nbsp;element&nbsp;content&nbsp;whitespace&nbsp;property&nbsp;on&nbsp;the&nbsp;Text&nbsp; <br />
//&nbsp;interface <br />
public&nbsp;boolean&nbsp;isWhitespaceInElementContent(); <br />
<br />
&nbsp; <br />
<br />
通过&nbsp;Attr&nbsp;接口的&nbsp;schemaTypeInfo&nbsp;属性，您还可以获取一个属性信息项的属性类型特性的值&nbsp;——即一个属性的类型。后面有一节对此给予了更详细的介绍。 <br />
<br />
此外，这里提供了一个新的特性，用于以最接近&nbsp;XML&nbsp;Infoset&nbsp;的形式返回&nbsp;Document，在此之前，由于不同的编辑操作（例如插入或者删除节点）的作用，文档通常会更加偏离&nbsp;XML&nbsp;Infoset。这是在进行文档标准化（document&nbsp;normalization）操作时可能造成的部分结果，我们将在下面的文档标准化一节中对此加以描述。 <br />
<br />
最后，新的&nbsp;Appendix&nbsp;C&nbsp;提供了&nbsp;XML&nbsp;Infoset&nbsp;模型与&nbsp;DOM&nbsp;之间的映射，在这种映射中，每一个&nbsp;XML&nbsp;Infoset&nbsp;信息项都映射到其相应的&nbsp;Node，反之也一样，一个信息项的每一个属性都映射到其相应&nbsp;Node&nbsp;的属性。这个附录应该可以使您对&nbsp;DOM&nbsp;数据模型有一个很好的全面了解，并且展示了如何访问所要查找的信息。 <br />
<br />
<br />
--------------------------------------------------------------- <br />
<br />
DocumentBuilderFactory&nbsp;factory&nbsp;=&nbsp;DocumentBuilderFactory.newInstance(); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DocumentBuilder&nbsp;builder&nbsp;=&nbsp;factory.newDocumentBuilder(); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InputStream&nbsp;in&nbsp;=&nbsp;Test.class.getResourceAsStream(fileName); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DocumentImpl&nbsp;doc&nbsp;=&nbsp;(DocumentImpl)&nbsp;builder.parse(in); <br />
<br />
--------------------------------------------------------------- <br />
<br />
import&nbsp;javax.xml.parsers.DocumentBuilder; <br />
import&nbsp;javax.xml.parsers.DocumentBuilderFactory; <br />
<br />
import&nbsp;org.apache.xerces.dom.DocumentImpl; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DocumentBuilderFactory&nbsp;factory&nbsp;=&nbsp;DocumentBuilderFactory.newInstance(); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DocumentBuilder&nbsp;builder&nbsp;=&nbsp;factory.newDocumentBuilder(); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InputStream&nbsp;in&nbsp;=&nbsp;new&nbsp;FileInputStream(args[0]); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DocumentImpl&nbsp;doc&nbsp;=&nbsp;(DocumentImpl)builder.parse(in); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(doc.getXmlEncoding()); <br />
<br />
============================================================================ <br />
import&nbsp;org.dom4j.Document; <br />
import&nbsp;org.dom4j.DocumentHelper; <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;xml&nbsp;=&nbsp;"&lt;?xml&nbsp;version='1.0'&nbsp;encoding='iso-8859-1'?&gt;&lt;Message&gt;Hi&nbsp;there&lt;/Message&gt;"; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Document&nbsp;doc&nbsp;=&nbsp;DocumentHelper.parseText(xml); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("The&nbsp;encoding&nbsp;is&nbsp;"&nbsp;+&nbsp;doc.getXMLEncoding()); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("As&nbsp;XML:&nbsp;"&nbsp;+&nbsp;doc.asXML()); <br />
<br />
The&nbsp;result&nbsp;is: <br />
<br />
The&nbsp;encoding&nbsp;is&nbsp;iso-8859-1 <br />
As&nbsp;XML:&nbsp;&lt;?xml&nbsp;version="1.0"&nbsp;encoding="iso-8859-1"?&gt; <br />
&lt;Message&gt;Hi&nbsp;there&lt;/Message&gt; <br />
<br />
================================= <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;xml&nbsp;=&nbsp;"&lt;?xml&nbsp;version='1.0'&nbsp;encoding='UTF-8'?&gt;&lt;Message&gt;Hi&nbsp;there&lt;/Message&gt;"; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Document&nbsp;doc&nbsp;=&nbsp;DocumentHelper.parseText(xml); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("The&nbsp;encoding&nbsp;is&nbsp;"&nbsp;+&nbsp;doc.getXMLEncoding()); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("As&nbsp;XML:&nbsp;"&nbsp;+&nbsp;doc.asXML()); <br />
<br />
The&nbsp;result&nbsp;is: <br />
<br />
The&nbsp;encoding&nbsp;is&nbsp;UTF-8 <br />
<br />
As&nbsp;XML:&nbsp;&lt;?xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"?&gt; <br />
&lt;Message&gt;Hi&nbsp;there&lt;/Message&gt; <br />
<br />
==================================== <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;xml&nbsp;=&nbsp;"&lt;?xml&nbsp;version='1.0'&nbsp;encoding='GBK'?&gt;&lt;Message&gt;Hi&nbsp;there&lt;/Message&gt;"; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Document&nbsp;doc&nbsp;=&nbsp;DocumentHelper.parseText(xml); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("The&nbsp;encoding&nbsp;is&nbsp;"&nbsp;+&nbsp;doc.getXMLEncoding()); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("As&nbsp;XML:&nbsp;"&nbsp;+&nbsp;doc.asXML()); <br />
<br />
The&nbsp;result&nbsp;is: <br />
<br />
The&nbsp;encoding&nbsp;is&nbsp;GBK <br />
<br />
As&nbsp;XML:&nbsp;&lt;?xml&nbsp;version="1.0"&nbsp;encoding="GBK"?&gt; <br />
&lt;Message&gt;Hi&nbsp;there&lt;/Message&gt; <br />
<img src ="http://www.blogjava.net/fatbear/aggbug/240250.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fatbear/" target="_blank">fatbear</a> 2008-11-13 10:33 <a href="http://www.blogjava.net/fatbear/archive/2008/11/13/240250.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>