Android-разбор плиста к документу - PullRequest
3 голосов
/ 21 апреля 2011

Я пытаюсь проанализировать plist-файл iPhone, чтобы использовать его с xpath и xpathexpression.

Пример списка:

<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

ожидается имя (позиция: START_TAG @ 3: 41 в 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();
}

Может, у кого-то есть идея?

1 Ответ

3 голосов
/ 21 апреля 2011

Проблема в том, что вы пытаетесь загрузить документ plist xml из папки res / xml / (R.xml.finedust) в качестве необработанного ресурса.

Вы должны поместить свой 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.

Анализ не может быть выполнен, если документ правильно сформирован (хотя не обязательно действителен).

...