我使用的是一个Swift xml解析器库,位于Here。我希望从下面的XML中获得一个特定的值,具有一定的价值。
下面的XML显示了设备上安装的应用程序列表,然后列出了每个应用程序的信息;例如版本和应用大小。每个<deviceSw>
是设备上的不同应用程序。我期待得到的版本值从com.fiberlink浏览器应用程序边注是,我不能只在设备上获得第二个应用程序,因为有些设备可能有com。浏览器被列为第三个应用程序或第四个应用程序。有没有一种方法可以在XML中对com的值进行排序。然后获取它的Version值?
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<deviceSoftwares>
<deviceSw>
<swAttrs>
<key>Application ID</key>
<type>string</type>
<value>com.fiberlink.maas360forios</value>
</swAttrs>
<swAttrs>
<key>Version</key>
<type>string</type>
<value>2.40.60</value>
</swAttrs>
<swAttrs>
<key>AppDataSize</key>
<type>string</type>
<value>2.09</value>
</swAttrs>
</deviceSw>
<deviceSw>
<swAttrs>
<key>Application ID</key>
<type>string</type>
<value>com.fiberlink.browser</value>
</swAttrs>
<swAttrs>
<key>Version</key>
<type>string</type>
<value>1.30.45</value>
</swAttrs>
<swAttrs>
<key>AppDataSize</key>
<type>string</type>
<value>0.51</value>
</swAttrs>
</deviceSw>
编辑:
我已经尝试了下面的代码来循环遍历键,可能会执行逻辑来排序,但它返回的值为零。
for elem in xml["deviceSoftwares"]["deviceSw"].all {
print(elem["swAttrs"]["key"].element!.text!)
}
编辑2:
我将代码改为:
for elem in xml["deviceSoftwares"]["deviceSw"]["swAttrs"].all {
print(elem["key"].element!.text)
}
什么也不打印出来,它只是一个空白的输出窗口。
2条答案
按热度按时间s2j5cfk01#
这种操作可以使用搜索 predicate 相当简洁地完成:
用法(假设
xml: XMLIndexer
在全局范围内):iecba09b2#
经过一番努力,下面的代码工作了:
这允许您查看XML并获得所需的app值的位置。然后,您可以添加更多代码来定位位置并获取值。