我正在尝试修改以下形式的 XML 文件:
<plist version="1.0">
<dict>
<key>items</key>
<array>
<dict>
<key>assets</key>
<array>
<dict>
<key>kind</key>
<string>software-package</string>
<key>url</key>
<string>https://s3.xyz.amazonaws.com/xyz/xyz.ipa</string>
</dict>
<dict>
<key>kind</key>
<string>display-image</string>
<key>url</key>
<string>https://s3.xyz.amazonaws.com/xyz/xyz.57x57.png</string>
</dict>
</array>
</dict>
</array>
</dict>
我要修改节点的内容<string>https://s3.xyz.amazonaws.com/xyz/xyz.ipa</string>
我可以使用以下内容找到相关的兄弟节点
import Text.XML.HXT.Core
main = do
plistString <- readFile "manifest.plist"
let plistDoc = readString [withValidate no, withSubstDTDEntities no] plistString
node <- runX $ plistDoc >>> deep (hasText ( == "software-package"))
print node
但我似乎无法选择关联的兄弟节点(尝试followingSiblingAxis
和moveUp >>> getChildren
),这将允许我操作所需的节点。NavigatableTree
与和之间的区别是否有问题NTree
?我所在的show
节点NTree (XText "software-package") []]
如果任何答案假设对箭头的接触非常有限,那真的会对我有所帮助。
谢谢。