Java Plist XML 解析

Jan*_*nis 5 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 
}
Run Code Online (Sandbox Code Playgroud)

我正在解析的部分如下所示:

<dict>    
  <key>foo</key><integer>123</integer>
  <key>bar</key><string>Boom &amp; Shroom</string>
</dict>
Run Code Online (Sandbox Code Playgroud)

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

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

先感谢您。

小智 3

您应该能够通过设置IS_COALESCING属性来解决您的问题XMLInputFactory(我也更喜欢XMLStreamReaderXMLEventReader但是 ymmv):

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

InputStream in = // ...
xmlReader = factory.createXMLStreamReader(in, "UTF-8");
Run Code Online (Sandbox Code Playgroud)

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