2015-02-22 7 views
1

Я пробовал поиск и чтение справки xmlstarlet, и прошу прощения, если я пропустил ответ. Я пытаюсь взять существующую строку XML и добавить ее в xml-файл с помощью xmlstarlet. то есть:Как вставить существующую строку xml с помощью xmlstarlet

У меня есть строка, как это: <somedata name="aname" val="aval"/>

и файл XML похожи на

<xml> 
    <subxml/> 
</xml> 

Я хотел бы выход быть

<xml> 
    <subxml> 
    <somedata name="aname" val="aval"/> 
    </subxml> 
</xml> 

Я не был способный найти способ либо просто эха строки, которую я имею, и вставить ее, либо какой-либо другой метод без необходимости синтаксического анализа строки, а затем вставить все параметры редактирования xmlstarlet (-n -v ...).

Заранее благодарим за помощь!

ответ

1

В качестве быстрого ответа я получил добавление строк, которые я хотел до конца существующего файла, а затем просто используя команду move в xmlstarlet, чтобы поместить данные в нужное место и правильно отформатировать. Кроме того, я удалил последний закрывающий тег и снова добавил, чтобы убедиться, что он правильно отформатировал xml. Это творческий подход, но не лучший способ сделать это, но он работает. В основном это выглядело примерно так:

sed -i -e 's/<\/xml>//' file.xml 
echo "<somedata name="aname" val="aval"/>" >> file.xml 
echo "</xml> 
xmlstarlet ed -L -O -m //somedata //xml//subxml file.xml 

Если у кого есть лучший способ сделать это, я бы до сих пор очень интересно.