[英]How to find values using XQuery and plist XML files
以下示例Plist文件用于以下我的问题。
<?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>firstDictionary</key>
<dict>
<key>string</key>
<string>someText</string>
<key>anArray</key>
<array>
<string>first</string>
<string>second</string>
</array>
</dict>
<key>secondDictionary</key>
<dict>
<key>subDictionary</key>
<dict>
<key>aBoolValue</key>
<false/>
</dict>
</dict>
</dict>
</plist>
所以我的问题是,由于这是一个Plist(与XCode一起使用),所以所有键的元素名称均为<key>
,其值可以为,等等。...键值对始终并排(直接兄弟姐妹)..
有没有一种使用XQuery产生键值的方法? 像说retuenValueForKey(secondDictionary)产生以下内容?
<dict>
<key>subDictionary</key>
<dict>
<key>aBoolValue</key>
<false/>
</dict>
</dict>
到目前为止,我的主要参考是W3Schools的此链接 ,但我无法使其正常工作。
您可以在纯XPath中完成此操作,但是如果您希望将其包装在一个应该也可以正常运行的函数中,请执行以下操作:
declare function local:returnValueForKey(
$key as xs:string,
$plist as element(plist)
) as element(dict)?
{
$plist//key[. = $key]/following-sibling::*[1]/self::dict
};
local:returnValueForKey('secondDictionary', <plist>...</plist>)
=>
<dict>
<key>subDictionary</key>
<dict>
<key>aBoolValue</key>
<false/>
</dict>
</dict>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.