Добавление только одного подузла с помощью xmlstarlet

отдача команды

xml ed -N x=http://java.sun.com/xml/ns/j2ee -s //x:web-app/x:security-constraint/x:auth-constraint -t elem -n role-name -v appuser WEB-INF/web.xml

Но приведенная выше команда добавляет два подузла с именем appuser из-за двойного появления «web-app/security-constraint/auth-constraint» в моем xml. Я хочу добавить только один. Как я могу это сделать?


person Sam    schedule 18.07.2013    source источник
comment
Можете ли вы опубликовать свой файл web.xml?   -  person Daniel    schedule 18.07.2013
comment
это примерно так ‹версия веб-приложения=2.4 xmlns=java.sun.com/xml/ns/j2ee; xmlns:xsi=w3.org/2001/XMLSchema-экземпляр; xsi:schemaLocation=java.sun.com/xml/ns/j2ee java.sun.com/xml/ns/j2ee/web-app_2_4.xsd› ‹ограничение-безопасности›‹ограничение-авторизации›‹имя-роли›role1‹ /role-name›‹role-name›role2‹/role-name›‹/authorize-constraint›‹/security-constraint›‹security-constraint›‹authorize-constraint›‹role-name›role1‹/role-name ›‹/ограничение-авторизации›‹/ограничение-безопасности›‹/веб-приложение›   -  person Sam    schedule 18.07.2013
comment
Я хочу добавить свое значение только при первом появлении   -  person Sam    schedule 18.07.2013


Ответы (1)


Вы можете сделать так, чтобы ваш xpath соответствовал только первому элементу ограничения безопасности:

//x:web-app/x:security-constraint[1]/x:auth-constraint
person Daniel    schedule 18.07.2013