Questions tagged «stax»

13
在GAE上解析完全有效的XML时,“序言中不允许内容”
在过去的48个小时里,我一直对这个绝对令人毛骨悚然的bug感到震惊,所以我想我最终会把毛巾扔掉,尝试在这里问一下,然后再将笔记本电脑扔出窗户。 我正在尝试从对AWS SimpleDB的调用中解析响应XML。响应恢复正常。例如,它可能看起来像: <?xml version="1.0" encoding="utf-8"?> <ListDomainsResponse xmlns="http://sdb.amazonaws.com/doc/2009-04-15/"> <ListDomainsResult> <DomainName>Audio</DomainName> <DomainName>Course</DomainName> <DomainName>DocumentContents</DomainName> <DomainName>LectureSet</DomainName> <DomainName>MetaData</DomainName> <DomainName>Professors</DomainName> <DomainName>Tag</DomainName> </ListDomainsResult> <ResponseMetadata> <RequestId>42330b4a-e134-6aec-e62a-5869ac2b4575</RequestId> <BoxUsage>0.0000071759</BoxUsage> </ResponseMetadata> </ListDomainsResponse> 我将此XML传递给解析器 XMLEventReader eventReader = xmlInputFactory.createXMLEventReader(response.getContent()); 并打电话eventReader.nextEvent();多次以获得我想要的数据。 这是奇怪的部分-它在本地服务器中很好用。我解析了响应,每个人都很高兴。问题是,当我将代码部署到Google App Engine时,传出请求仍然有效,并且响应XML对我来说似乎100%相同且正确,但是响应无法解析,但出现以下异常: com.amazonaws.http.HttpClient handleResponse: Unable to unmarshall response (ParseError at [row,col]:[1,1] Message: Content is not allowed in prolog.): <?xml version="1.0" encoding="utf-8"?> …

6
什么时候应该选择SAX而不是StAX?
与构建像DOM解析器之类的树结构的解析器一样,流式XML解析器(例如SAX和StAX)更快,内存效率更高。SAX是推式解析器,这意味着它是观察者模式(也称为侦听器模式)的实例。SAX首先出现,然后是StAX-拉式解析器,这意味着它基本上像迭代器一样工作。 您可以找到在任何地方都偏爱StAX而不是SAX的原因,但是通常可以归结为:“更易于使用”。 在JAXP上的Java教程中,StAX被模糊地呈现为DOM和SAX之间的中间部分:“它比SAX更容易,并且比DOM更有效”。但是,我从来没有发现StAX比SAX慢或低内存效率的任何线索。 这一切使我感到奇怪:是否有任何理由选择SAX而不是StAX?
81 java  xml  xml-parsing  sax  stax 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.