一次删除属性和匹配的节点
Posted
技术标签:
【中文标题】一次删除属性和匹配的节点【英文标题】:Remove attribute & matched node at once 【发布时间】:2021-11-23 12:39:42 【问题描述】:我尝试从 xml 中删除 attribute 和 child node 一次,例如:
<xml>
<node attribute="name">
<child>name</child>
</node>
</xml>
达到预期的结果
<xml>
<node>
</node>
</xml>
取决于子价值。
有可能吗?
【问题讨论】:
【参考方案1】:你可能可以;尝试使用
xml ed -d '//node[child["name"]]/@attribute' -d '//node/child["name"]' file.xml
第一部分删除(-d
)node
节点的attribute
属性,该节点本身具有child
子节点和name
文本值;第二个-d
删除“子”节点本身。
【讨论】:
匹配无效。不仅“名称”包含,而且所有“子”节点都被删除了。【参考方案2】:受 Jack 的启发,这是可行的解决方案:
xml ed -d '//node[child="name"]/@attribute' -d '//node/child[contains(text(),"name")]' file.xml
【讨论】:
以上是关于一次删除属性和匹配的节点的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Gremlin 在一次查询中同时获取节点属性和边名?