Android解析plist到文档

标签 android parsing plist

我正在尝试解析 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/

相关文章:

java - 升级数据库

android - 如何通知 Picasso 链接中的图像发生了变化?

Android 软键盘遮挡 ScrollView 中的 EditTexts

android - 以数字方式将 Fabric Android 应用程序与 iOS 应用程序集成

c# - 比 decimal.Parse 更快的替代方法

java - Antlr - 表达式解析器和评估器

parsing - ANTLR4 谓词失败忽略以下替代方案?

ios - 更新您的应用程序是否会保存用户以前的 Plist 文件?

ios - swift 电子邮件中的 plist 附件(NS Cocoa 错误域代码 260)

ios - 将新的 plist 文件添加到 iOS 应用程序