在第二个节点中插入两个相同节点的XML节点

时间:2012-12-11 20:49:09

标签: xml xmlstarlet

我正在使用XML Starlet以编程方式编辑xml文件。我有以下XML文档:

    <manifest>
            <application>
                    <activity>
                            <intent-filter>
                                   <action/>
                                   <category/>
                            </intent-filter>
                            <intent-filter>
                            </intent-filter>
                    </activity>
            </application>
    </manifest>

我正在尝试向第二个<action>节点添加新的<intent-filter>标记。如果不在第一个<intent-filter>无意中创建节点,我该怎么做?

预期产出:

    <manifest>
            <application>
                    <activity>
                            <intent-filter>
                                   <action/>
                                   <category/>
                            </intent-filter>
                            <intent-filter>
                                   <action/>
                            </intent-filter>
                    </activity>
            </application>
    </manifest>

我已经查看了文档:http://xmlstar.sourceforge.net/doc/xmlstarlet.txt但是,我似乎缺少这种情况的解决方案。

谢谢!

1 个答案:

答案 0 :(得分:0)

想出来,我实际上遇到了XPath问题!

xml ed -s "(/manifest/application/activity/intent-filter)[2]" -t elem -n action -v "" manifest.xml 

虽然如果有另一种规范的方式来实现这一行动,请尽快说明。