xmlstarlet:如何插入嵌套元素?



我试图将一个带有嵌套 -> 的<Product>元素添加到<Products>列表中。

从此 XML 中:

<Products>
<Product>
<Name>
product1
</Name>
</Product>
</Products>

想像这样完成:

<Products>
<Product>
<Name>
product1
</Name>
</Product>
<Product>
<Name>
product2
</Name>
</Product>
</Products>

这是我的片段尝试:

xmlstarlet ed --inplace -s /Products -t elem -n "Product" -v "" 
-s //Product -t elem -n "name" -v "product2" 
Settings.xml

问题是每个当前<Product>都会多获得 1 个<Name>元素:

<Products>
<Product>
<name>
product1
</name>
<name>
product2
</name>
</Product>
<Product>
<name>
product2
</name>
</Product>
<Products>

试试这样

xmlstarlet ed --subnode "//Products" --type elem -n Product 
--subnode "//Products/Product[last()]" --type elem -n n
"Name"  --value "product2" Settings.xml

看看它是否有效。

最新更新