0

我正在使用 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然而,我似乎缺少这种情况的解决方案。

谢谢!

4

1 回答 1

0

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

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

尽管如果有另一种实现此操作的规范方法,请插话。

于 2012-12-11T20:59:19.200 回答