Java Plist XML 解析

标签 java xml plist

我正在用 java 解析一个(格式不正确的)Apple Plist 文件。

我的代码如下所示:

InputStream in = new FileInputStream( "foo" ); 
XMLInputFactory factory = XMLInputFactory.newInstance(); 
XMLEventReader parser = factory.createXMLEventReader( in ); 
while (parser.hasNext()){    
XMLEvent event = parser.nextEvent();    
  //code to navigate the nodes 
}

我正在解析的部分看起来像这样:

<dict>    
  <key>foo</key><integer>123</integer>
  <key>bar</key><string>Boom &amp; Shroom</string>
</dict>

我现在的问题是,包含 & 符号的节点没有按照应有的方式进行解析,因为 & 符号代表一个实体。

我该怎么做才能将节点的值作为完整的字符串而不是损坏的部分获取?

提前谢谢你。

最佳答案

您应该能够通过在 XMLInputFactory 上设置 IS_COALESCING 属性来解决您的问题(我也更喜欢 XMLStreamReader 而不是 XMLEventReader , 但是 ymmv):

XMLInputFactory factory = XMLInputFactory.newInstance();
factory.setProperty(XMLInputFactory.IS_COALESCING, Boolean.TRUE);

InputStream in = // ...
xmlReader = factory.createXMLStreamReader(in, "UTF-8");

顺便说一下,据我所知,没有一个 JDK 解析器可以在不阻塞的情况下处理“格式不正确”的 XML。事实上,您的 XML 格式正确:它使用实体而不是原始的 & 符号。

关于Java Plist XML 解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2451170/

相关文章:

Java 性能 : Getting and Setting Lists

python - 从混合内容文档中提取多个 xml 树

ios - 加密plist文件方法

java - 我应该使用哪个 InitialContextFactory?

java - 如何更改 docker tomcat 8 中的用户配置?

java - 如何从线程转储重新创建事务

c++ - 如何处理 GetText() 返回的 tinyxml 空指针

javascript - 将数据加载到静态 html 表单页面或 XML 中并使用 javascript

ios - 如何限制不支持空投功能的iOS设备?

ios - 如何使用 PlistBuddy 将数组添加到 Plist?