成都创新互联网站制作重庆分公司

如何使用XML文档进行分析

小编给大家分享一下如何使用XML文档进行分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

成都创新互联主要从事成都做网站、成都网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务龙州,10余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220

怎样使用XML文档进行分析

一、推分析之于拉分析

比较于推分析,拉分析具有如下一些优点:

1.在拉分析中,事件是由分析应用程序生成的,因此把分析规则提供到客户端而不是分析器。

2.拉分析的代码更简单并且它比推分析有更少的库。

3.拉分析客户端能同时读多个XML文档。

4.拉分析允许你过滤XML文档并且跳过分析事件。

二、了解StAX

针对于XML的流式API(StAX),是在2004年3月的JSR173规范中引入,这是一种针对XML的流式拉分析API.StAX是JDK6.0提供的一种新特征,你可以从此处下载它的测试版本试用。

一个推模型分析器不断地生成事件,直到XML文档被完全分析结束。但是,拉分析由应用程序进行调整;因此,分析事件是由应用程序生成的。这意味着,使用StaX,你可以推迟分析-在分析时跳过元素并且分析多个文档。在使用DOMAPI的时候,你必须把整个的XML文档分析成一棵DOM结构,这样也就降低了分析效率。而借助于StAX,在分析XML文档时生成分析事件。有关于StAX分析器与其它分析器的比较在此不多介绍。

StAXAPI的实现是使用了JavaWeb服务开发(JWSDP)1.6,并结合了SunJava流式XML分析器(SJSXP)-它位于javax.xml.stream包中。XMLStreamReader接口用于分析一个XML文档,而XMLStreamWriter接口用于生成一个XML文档。XMLEventReader负责使用一个对象事件迭代子分析XML事件-这与XMLStreamReader所使用的光标机制形成对照。本教程将基于JDK6.0中的StAX实现来完成对一个XML文档的分析。

其实,StaX仅仅是JDK6.0所提供的XML新特征之一。新的JDK6.0还提供了对针对于XML-Web服务的Java架构(JAX-WS)2.0,针对于XML绑定的JavaAPI(JAXB)2.0,XML数字签名API的支持,甚至还支持SQL:2003'XML'数据类型。

三、初步安装

如果你正在使用JDK6.0,那么默认情况下,StAXAPI位于Classpath中。如果你在使用JWSDP1.6,请把JWSDP1.6StAXAPI添加到classpath中。这需要把sjsxplibjsr173_api.jar和sjsxplibsjsxp.jar添加到CLASSPATH变量中。在目录下安装JWSDP1.6.Jsr173_api.jar相应于JSR-173APIJAR,Sjsxp.jar相应于SJXSP实现JAR.

四、使用XMLStreamWriter进行写操作

首先,你要创建将待分析的XML文档。由StAX的XMLStreamWriter生成XML.然而,XMLStreamWriter的一个限制是,它不一定会生成良构的文档-而且生成的文档也不一定是有效的。你需要确保生成的XML文档是良构的。列表1是一个由XMLStreamWriter生成的原始XML文档的示例。

怎样使用XML文档进行分析

在此,你试图使用XMLStreamWriterAPI生成列表1中的catalog.xml.在本节中的代码片断节选自XMLWriter.java应用程序,显示于列表2中。首先,你将导入StAX包类,请参考下列编码:

importjavax.xml.stream.*;

importjavax.xml.stream.events.*;

importjavax.xml.stream.XMLOutputFactory;

你要从一个XMLOutputFactory中得到你的XMLStreamWriter.因此,首先你必须创建一个新的XMLOutputFactory:

XMLOutputFactoryoutputFactory=XMLOutputFactory.newInstance();

接下来,创建一个FileWriter以输出XML文档-它将被生成到一个XML文件中:

FileWriteroutput=newFileWriter(newFile("C:/STAX/catalog.xml"));

接下来,创建一个XMLStreamWriter:

XMLStreamWriterXMLStreamWriterr=outputFactory.createXMLStreamWriter(output);

现在,使用writeStartDocument()方法创建一个文档开头。添加要在XML声明中指定的编码和版本(记住,指定的编码并不是生成的XML文档的编码)。如果你需要指定XML文档的编码,该怎么办呢?当从一个XMLOutputFactory对象创建一个XMLStreamWriter对象时,你会这样做:

XMLStreamWriter.writeStartDocument("UTF-8","1.0");

使用writeComment()方法以输出一个注释:

XMLStreamWriter.writeComment("AOReillyJournalCatalog");

使用writeProcessingInstruction()方法以输出一条处理指令:

XMLStreamWriter.writeProcessingInstruction("catalog","journal='OReilly'");

使用writeStartElement()方法以输出'catalog'元素的开始(元素前缀和命名空间URI也可以在这个方法中指定的):

XMLStreamWriter.writeStartElement("journal","catalog","http://OnJava.com/Journal");

使用writeNamespace()方法以添加'journal'命名空间声明(命名空间前缀和命名空间URI也是在这个方法中指定的):

XMLStreamWriter.writeNamespace("journal","http://OnJava.com/Journal");

再次使用writeNamespace()方法添加xsi命名空间:

XMLStreamWriter.writeNamespace("xsi","http://www.w3.org/2001/XMLSchema-instance");

使用writeAttribute()方法添加xsi:namespaceSchemaLocation属性:

XMLStreamWriter.writeAttribute("xsi:noNamespaceSchemaLocation","file://c:/Schemas/catalog.xsd");

使用writeAttribute()方法添加'publisher'属性:

XMLStreamWriter.writeAttribute("publisher","OReilly");

输出'journal'元素的开始。当增加一个新元素时,前一个元素的'>'括号也被添加上:

XMLStreamWriter.writeStartElement("journal","journal","http:

//OnJava.com/Journal");

使用writeAttribute()方法以添加'date'和'title'属性。然后,使用writeElement()方法以添加'article'和'title'元素。然后,使用writeCharacters()方法输出'title'元素的文本:

XMLStreamWriter.writeCharacters("DataBindingwithXMLBeans");

任何包含文本或子元素的元素都要有一个结束标签。使用writeEndElement()元素来添加'title'元素的结束标签:

XMLStreamWriter.writeEndElement();

添加'author'元素和'journal'元素的结束标签。在writeEndElement()方法中,不必要指定元素前缀和命名空间URI.以类似方式添加另一个'journal'元素。然后,添加'catalog'元素的结束标签。最后,输出缓冲的数据:

XMLStreamWriter.flush();

最后一步,关闭XMLStreamWriter.

XMLStreamWriter.close();

这就是生成catalog.xml的过程。

源码中的列表2展示了完整的Java应用程序-XMLWriter.java.这个应用程序可以作为一个命令行应用程序运行或在一种例如Eclipse这样的IDE中运行。

五、使用XMLStreamReader进行分析

通过使用XMLStreamReaderAPI分析列表1中的文档,我们来详细分析一下其工作原理。XMLStreamReader使用一种光标分析XML文档。它的接口包含一个next()方法-由它分析下一个分析事件。getEventType()方法返回事件类型。后面的代码片断来自于XMLParser.java应用程序,详见列表3.

在这个XMLParser.java应用程序中,首先,你要导入StAX类:

importjavax.xml.stream.*;

importjavax.xml.stream.events.*;

importjavax.xml.stream.XMLInputFactory;

然后,创建一个XMLInputFactory,由此你会得到一个XMLStreamReader:

XMLInputFactoryinputFactory=XMLInputFactory.newInstance();

以上是“如何使用XML文档进行分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


新闻名称:如何使用XML文档进行分析
转载源于:http://cxhlcq.com/article/ggppps.html

其他资讯

在线咨询

微信咨询

电话咨询

028-86922220(工作日)

18980820575(7×24)

提交需求

返回顶部