XMLStarlet 删除父节点
XMLStarlet delete parent node
我是 XMLStarlet 的新手,我想知道是否有可能删除一个父节点,该父节点的标签中有一个具有特定值的子节点。
在我的示例中,我想删除子节点“ 中的节点“ ” " 具有特定值 "SecondTab":
开始 XML:
<?xml version="1.0" encoding="UTF-8"?>
<Profile xmlns="http://soap.sforce.com/2006/04/metadata">
<tabVisibilities>
<tab>FirstTab</tab>
<visibility>DefaultOn</visibility>
</tabVisibilities>
<tabVisibilities>
<tab>SecondTab</tab>
<visibility>DefaultOn</visibility>
</tabVisibilities>
<tabVisibilities>
<tab>ThirdTab</tab>
<visibility>DefaultOff</visibility>
</tabVisibilities>
</Profile>
预期 XML:
<?xml version="1.0" encoding="UTF-8"?>
<Profile xmlns="http://soap.sforce.com/2006/04/metadata">
<tabVisibilities>
<tab>FirstTab</tab>
<visibility>DefaultOn</visibility>
</tabVisibilities>
<tabVisibilities>
<tab>ThirdTab</tab>
<visibility>DefaultOff</visibility>
</tabVisibilities>
</Profile>
非常感谢你,Davide。
您的文件使用了命名空间。
xmlstarlet edit -N ns='http://soap.sforce.com/2006/04/metadata' --delete "//ns:tabVisibilities[ns:tab[contains(text(),'SecondTab')]]" file.xml
输出:
<?xml version="1.0" encoding="UTF-8"?>
<Profile xmlns="http://soap.sforce.com/2006/04/metadata">
<tabVisibilities>
<tab>FirstTab</tab>
<visibility>DefaultOn</visibility>
</tabVisibilities>
<tabVisibilities>
<tab>ThirdTab</tab>
<visibility>DefaultOff</visibility>
</tabVisibilities>
</Profile>
参见:xmlstarlet edit --help
我是 XMLStarlet 的新手,我想知道是否有可能删除一个父节点,该父节点的标签中有一个具有特定值的子节点。
在我的示例中,我想删除子节点“
开始 XML:
<?xml version="1.0" encoding="UTF-8"?>
<Profile xmlns="http://soap.sforce.com/2006/04/metadata">
<tabVisibilities>
<tab>FirstTab</tab>
<visibility>DefaultOn</visibility>
</tabVisibilities>
<tabVisibilities>
<tab>SecondTab</tab>
<visibility>DefaultOn</visibility>
</tabVisibilities>
<tabVisibilities>
<tab>ThirdTab</tab>
<visibility>DefaultOff</visibility>
</tabVisibilities>
</Profile>
预期 XML:
<?xml version="1.0" encoding="UTF-8"?>
<Profile xmlns="http://soap.sforce.com/2006/04/metadata">
<tabVisibilities>
<tab>FirstTab</tab>
<visibility>DefaultOn</visibility>
</tabVisibilities>
<tabVisibilities>
<tab>ThirdTab</tab>
<visibility>DefaultOff</visibility>
</tabVisibilities>
</Profile>
非常感谢你,Davide。
您的文件使用了命名空间。
xmlstarlet edit -N ns='http://soap.sforce.com/2006/04/metadata' --delete "//ns:tabVisibilities[ns:tab[contains(text(),'SecondTab')]]" file.xml
输出:
<?xml version="1.0" encoding="UTF-8"?>
<Profile xmlns="http://soap.sforce.com/2006/04/metadata">
<tabVisibilities>
<tab>FirstTab</tab>
<visibility>DefaultOn</visibility>
</tabVisibilities>
<tabVisibilities>
<tab>ThirdTab</tab>
<visibility>DefaultOff</visibility>
</tabVisibilities>
</Profile>
参见:xmlstarlet edit --help