我正在尝试解析 iPhone plist 文件以将其与 xpath 和 xpathexpression 一起使用。
plist 示例:
<plist version="1.0">
<dict>
<key>00</key>
<dict>
<key>pkw</key>
<dict>
<key>gas</key>
<integer>0</integer>
<key>diesel</key>
<dict>
<key>ohne</key>
<integer>0</integer>
<key>pm01</key>
<integer>0</integer>
<key>pm0</key>
<integer>0</integer>
<key>pm1</key>
<integer>0</integer>
<key>pm2</key>
<integer>0</integer>
<key>pm3</key>
<integer>0</integer>
<key>pm4</key>
<integer>0</integer>
<key>pm5</key>
<integer>4</integer>
</dict>
<key>otto</key>
<integer>0</integer>
</dict>
</dict>
</dict>
</plist>
使用下面的代码我得到一个SAXParserException
name expected (position:START_TAG @3:41 in java.io.InputStreamReader@43e395f0)
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
builderFactory.setNamespaceAware(true);
DocumentBuilder builder = null;
try {
builder = builderFactory.newDocumentBuilder();
} catch (ParserConfigurationException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
Document document = null;
try {
document = builder.parse(getApplicationContext().getResources().openRawResource(R.xml.finedust));
} catch (NotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
也许有人有想法?
最佳答案
问题是,您正在尝试从 res/xml/文件夹 ( R.xml.finedust
) 加载 plist xml 文档作为原始资源。
您应该将您的 xml 文件放在 res/raw/文件夹中 (res/raw/findedust.xml),然后通过 R.raw.finedust
访问它。 .
所以你的 document
初始化将是:
document = builder.parse(getApplicationContext().getResources().
openRawResource(R.raw.finedust));
这样就可以了!
已弃用
你有 4 <dict>
标签已打开,但其中只有 3 个具有匹配的关闭标签。
你的一个<dict>
标签 - 可能是第一个 - 没有关闭!你应该检查你的输入,当你发现它时,关闭它,然后它会解析 xml。
除非文档格式正确(但不一定有效),否则无法进行解析。
关于Android解析plist到文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5741821/