从 XML 字典中提取数组

Extract array from XML dictionary

是否可以从下面的 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>

您可以利用 NSXMLParser。您需要实现 NSXMLParserDelegate 并且在 parser:didStartElement: 中如果 elementName 等于 "key",则在下一个 parser:foundCharacters: 调用中将键值添加到 NSMutableArray .最后你会得到一个有序的键数组。

当您拥有订购的密钥时,您可以使用它们遍历您订购的 NSDictionary(下面的 dict):

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

查看具体代码示例 - NSXMLParser Simple Example