首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用HXT修改XML

使用HXT修改XML
EN

Stack Overflow用户
提问于 2018-07-25 22:10:15
回答 1查看 57关注 0票数 0

我正在尝试修改以下形式的XML文件:

代码语言:javascript
复制
<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>的内容

我可以找到相关的同级节点,如下所示

代码语言:javascript
复制
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

但是我似乎无法选择相关的同级节点(尝试使用followingSiblingAxismoveUp >>> getChildren),这将允许我操作所需的节点。这与NavigatableTreeNTree之间的区别有关吗;节点I'm shows as NTree (XText "software-package") []]

如果任何答案都假设对箭头的接触非常有限,这对我真的很有帮助。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-27 18:22:07

我用一种不同的方式解决了这个问题。它感觉不是很健壮(匹配xyz.ipa的子字符串),但在我等待灵感的时候,它解除了我的障碍:

代码语言:javascript
复制
import Text.XML.HXT.Core
import Data.Char (toUpper)

uppercase = map toUpper

main = do
  plistString <- readFile "manifest.plist"
  let plistDoc = readString [withValidate no, withSubstDTDEntities no] plistString
  node <- runX . xshow $ plistDoc >>> processTopDown (ifA (hasText ( isInfixOf "xyz.ipa")) (changeText uppercase) (this))
  print node
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51521052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档