Мы используем инструмент (интеграция данных пентахо), который использует XML как макет для своих файлов. Он хранит слишком много информации в этих файлах (например, информацию о подключении). Прежде чем нажимать файлы на Git, я хочу очистить все блоки соединений, которые используют JNDI. Если я использую XSLT (что может быть возможно), объекты будут разрешены. Это заставит Git видеть много изменений каждый раз, когда я делаю небольшие изменения, что явно нежелательно.Использование SED для удаления всех элементов XML, имеющих определенные значения
У меня есть XML-файл, содержащий следующие строки:
<connections>
<connection>
<name>connection1</name>
<server/>
<type>POSTGRESQL</type>
<access>JNDI</access>
<database>connections/test/connection1</database>
<port>-1</port>
<username/>
<password>Encrypted </password>
</connection>
<connection>
<name>test</name>
<server>asdf</server>
<type>ORACLE</type>
<access>Native</access>
<database>asdf</database>
<port>1521</port>
<username>asdf</username>
<password>zcv</password>
</connection>
</connections>
Я хочу, чтобы уменьшить его:
<connections>
<connection>
<name>test</name>
<server>asdf</server>
<type>ORACLE</type>
<access>Native</access>
<database>asdf</database>
<port>1521</port>
<username>asdf</username>
<password>zcv</password>
</connection>
</connections>
Я не могу использовать XSLT-анализатор (например XMLStarlet), так как это будет проанализировать ссылку на объект (/
становится /
).
Я пробовал с СЕПГ:
sed -ne '/<connection>/+.*/<access>/JNDI<\/access>/[\s\S]+.*<\/connection>/d'
но не повезло там.
Вы не хотите использовать sed для обработки XML. – Tomalak
Почему проблемы с разрешениями возникают? Если это XML, то два представления эквивалентны. Если это не XML, вопрос ошибочен (и у вас большие проблемы). В любом случае, sed, вероятно, является неправильным инструментом для работы. –
Мы используем инструмент (интеграция данных пентахо), который использует XML как макет для своих файлов. Он хранит слишком много информации в этих файлах (например, соединение, как описано в примере). Прежде чем нажимать файлы на GIT, я хочу очистить все блоки соединений, которые используют JNDI. Если я использую XSLT (что может быть возможно), объекты будут разрешены. Это заставит GIT видеть много изменений каждый раз, когда вы хотите загрузить незначительные изменения. Излишне говорить, что этого мы скорее не хотим. –