标签: saxparser

SAX和DOM有什么区别?

我阅读了一些关于XML解析器的文章,并且遇到了SAXDOM.

SAX是基于事件的,DOM是树模型 - 我不理解这些概念之间的差异.

根据我的理解,基于事件意味着某种事件发生在节点上.就像当单击特定节点时,它将给出所有子节点,而不是同时加载所有节点.但是在DOM解析的情况下,它将加载所有节点并创建树模型.

我的理解是否正确?

请纠正我如果我错了或以更简单的方式向我解释基于事件和树模型.

saxparser xml-parsing domparser

237
推荐指数
7
解决办法
22万
查看次数

如何使用logback禁用accessExternalDTD和entityExpansionLimit警告

我正在使用groovy的logback并在解析xml时出现很多警告.我知道JDK1.7_u45中导致此问题的错误.

Warning:  org.apache.xerces.parsers.SAXParser: Property 'http://javax.xml.XMLConstants/property/accessExternalDTD' is not recognized.
Warning:  org.apache.xerces.parsers.SAXParser: Property 'http://www.oracle.com/xml/jaxp/properties/entityExpansionLimit' is not recognized.
Run Code Online (Sandbox Code Playgroud)

有没有办法关闭这个日志警告出现在DEBUG?我尝试使用Filter编写过滤器,但没有帮助.

java groovy logback saxparser xerces2-j

29
推荐指数
1
解决办法
3万
查看次数

什么是"推动方法"和"拉动方法"来解析?

在推送解析方法下,推送解析器在解析文档时生成同步事件,并且应用程序可以使用回调处理程序模型处理这些事件

这是关于SAX 2.0的Pro XML Development with Java一书中给出的文本.

至于StAX,这本书说:

在pull方法下,使用解析器在应用程序的控制下从XML文档中提取事件.

我想问一下,突出显示文本的含义是什么?一个适合初学者的答案表示赞赏:)

java xml stax saxparser

25
推荐指数
3
解决办法
1万
查看次数

SAX解析器与XMLPull解析器

我理解SAX解析器的工作方式与XMLPull解析器之间的区别.事实上这里有一个很好的解释:

http://www.firstobject.com/xml-reader-sax-vs-xml-pull-parser.htm 这篇文章有点以.NET为中心,但概念适用.

虽然我同意作者的观点,即Pull解析器更容易使用,但我很困惑哪种类型的解析器在哪种情况下会更好.如果有人可以放弃任何光线并指出我更多的阅读,我会很感激.

谢谢.

xml android saxparser xmlpullparser

21
推荐指数
2
解决办法
2万
查看次数

如何解决Android上的XML解析性能问题

我必须在Android上阅读大约约4000行的XML文件.首先,我尝试使用SimpleXML库,因为它最简单,我的HTC Desire花了大约2分钟.所以我想也许SimpleXML因为反射和这个库使用的所有其他魔法而变得如此之慢.我重写了我的解析器并使用了内置的DOM解析方法,并对性能有一些特别的关注.这有点帮助,但它仍然需要大约60秒,这仍然是完全不可接受的.经过一番研究后,我在developer.com上发现了这篇文章.有一些图表显示其他两种可用方法 - SAX解析器和Android的XML Pull-Parser - 同样很慢.在文章的最后,您将找到以下声明:

我遇到的第一个惊喜是这三种方法的速度有多慢.用户不希望在移动电话上等待很长时间,因此解析超过几十条记录的任何内容都可能需要采用不同的方法.

什么可能是"不同的方法"?如果你有超过"几十条记录"怎么办?

xml android saxparser xml-parsing simple-framework

16
推荐指数
2
解决办法
1万
查看次数

从android中的HttpURLConnection获取InputStream时获取UnknownLengthHttpInputStream

HttpURLConnection.getInputStream()给出UnknownLengthHttpInputStream,由于此Document解析引发SAX解析器异常.

以下是代码

try{
    URL url = new URL(uri);
    HttpURLConnection connection =
    (HttpURLConnection) url.openConnection();
    connection.setRequestMethod("GET");
    connection.setRequestProperty("Accept", "application/xml");

    InputStream xml = connection.getInputStream();
    System.out.println(connection.getResponseCode());
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    DocumentBuilder db = dbf.newDocumentBuilder();
    Document doc = db.parse(connection.getInputStream());
    doc.getDocumentElement().normalize();

}catch(Exception e){
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

任何人都知道UnknownLengthHttpInputStream的原因.我只在android中遇到此错误,此代码在Java Project中完美运行.

以下是LogCat的例外情况:

08-08 11:07:40.490: W/System.err(1493): org.xml.sax.SAXParseException: Unexpected end of document
08-08 11:07:40.504: W/System.err(1493): at org.apache.harmony.xml.parsers.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:129)
08-08 11:07:40.510: W/System.err(1493): at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:107)
08-08 11:07:40.510: W/System.err(1493): at com.example.testws.MainActivity.onCreate(MainActivity.java:59)
08-08 11:07:40.520: W/System.err(1493): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
08-08 11:07:40.520: W/System.err(1493): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
08-08 11:07:40.520: W/System.err(1493): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
08-08 …
Run Code Online (Sandbox Code Playgroud)

java android web-services inputstream saxparser

16
推荐指数
1
解决办法
1848
查看次数

javax.xml.parsers.SAXParserFactory ClassCastException

当我通过maven运行测试时,我在本地机器上遇到以下异常(mvn test).

ch.qos.logback.core.joran.event.SaxEventRecorder@195ed659 - Parser configuration error occured 
java.lang.ClassCastException: com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl cannot be cast to javax.xml.parsers.SAXParserFactory
Run Code Online (Sandbox Code Playgroud)

在谷歌搜索后,我遇到了几个页面,描述了它背后的主要问题(在不同的类加载器中有几个SAXParserFactoryImpl).

- > http://www.xinotes.org/notes/note/702/

我的问题是,如何确定哪个库也提供SAXParserFactoryImpl,以便我可以排除它.我正在使用Maven,IntelliJ和JDK 1.6.0_23.问题出现在命令行以及从IntelliJ运行测试时.

但奇怪的是,在构建服务器上,这个问题不会发生.

更新1

刚刚想到,当我在mvn clean之后第一次运行mvn测试时,错误没有出现.但是一旦我再次运行mvn test(没有干净,就会发生异常)(当我从IntelliJ运行它时).

当我在cmd行上运行它时,几个mvn测试调用确实有效.

java xml saxparser

15
推荐指数
1
解决办法
2万
查看次数

使用SAX Parser,获取属性的值

我正在使用Android从Web解析XML.下面的代码显示了XML的示例.我遇到的问题是我无法获取item标签的字符串值.当我使用name = attributes.getQName(i);它时输出名称,而不是属性的值.

<weatherdata>
 <timetags>
  <item name="date">
   <value>20/04/2012</value>
   <unit/>
   <image/>
   <class>dynamic</class>
   <description>The current date</description>
  </item>
Run Code Online (Sandbox Code Playgroud)

java xml android xml-attribute saxparser

15
推荐指数
2
解决办法
3万
查看次数

android中的XML SAX解析器,Pull解析器和DOM解析器之间的区别

我想知道Android中的XML SAX解析器,Pull解析器和DOM解析器之间的区别.在哪种情况下,哪一个在性能和实施方面更好?

感谢名单.Khobaib.

android saxparser xmlpullparser domparser

15
推荐指数
2
解决办法
1万
查看次数

如何使用xpath检索属性名称中包含冒号的属性的值

我有一个简单的要求,我需要获取属性的值,xml:idaf1.我正在使用a SAXParser而这里是我xpath:a/aff/@xml:id的相反我能够获取使用的值xpath:a/aff/@value.

但我无法找回价值,请你帮忙吗?

<?xml version="1.0" encoding="UTF-8" ?>
<a>
   <aff xml:id="af1" value="a">
        <uAff>
            Hello
        </uAff>
    </aff>
    <aff xml:id="corr1">
        <uAff>
            Hello1
        </uAff>
    </aff>
</a>
Run Code Online (Sandbox Code Playgroud)

提前致谢.

java xml android saxparser xml-parsing

12
推荐指数
1
解决办法
4005
查看次数