Извлечь массив из словаря XML - PullRequest
0 голосов
/ 24 мая 2018

Можно ли извлечь упорядоченный массив ключей из XML-файла ниже:

В основном я хочу получить массив, который выглядит следующим образом: ["key1", "key2","myKey3", "key4", "key5"]

Проблема в том, что если я сначала преобразую в NSDictionary, а затем перебираю ключи, я теряю порядок.

Я надеялся бытьвозможность сделать это без изменения веб-сервера.

Заранее спасибо

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>key1</key>
    <array>
        <string></string>
        <string>title1</string>
        <string>disabled</string>
    </array>
    <key>key2</key>
    <array>
        <string></string>
        <string>title2</string>
        <string>disabled</string>
    </array>
    <key>myKey3</key>
    <array>
        <string></string>
        <string>title3</string>
    </array>
    <key>key4</key>
    <array>
        <string></string>
        <string>title4</string>
        <string>disabled</string>
    </array>
    <key>key5</key>
    <array>
        <string></string>
        <string>title5</string>
        <string>disabled</string>
    </array>
</plist>

1 Ответ

0 голосов
/ 24 мая 2018

Вы можете использовать NSXMLParser .Вам необходимо реализовать NSXMLParserDelegate, и в parser:didStartElement:, если elementName равно «ключу», то при следующем вызове parser:foundCharacters: вы добавляете значение ключа в NSMutableArray.В конце вы получаете упорядоченный массив ключей.

Когда у вас есть заказанные ключи, вы можете использовать их для итерации по NSDictionary (dict ниже), который у вас есть в следующем порядке:

for (NSString *key in orderedKeys) {
    NSArray *properties = dict[key];
    ...
}

См. Конкретный пример кода - Простой пример NSXMLParser

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...