Удалите узлы на XML с помощью поиска xmlstarlet - PullRequest
1 голос
/ 06 августа 2020

Мне нужно удалить все <row> узлы с <integer>3489943</integer> с помощью xmlstarlet, но я не могу определить xpath.

Фрагмент файла выглядит следующим образом

<?xml version='1.0' encoding='UTF-8'?>
<backup xmlns="http://www.atlassian.com/ao" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <database>
    <meta key="database.name" value="Oracle"/>
    <meta key="database.version" value="Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit"/>
    <meta key="database.minorVersion" value="1"/>
    <meta key="database.majorVersion" value="12"/>
    <meta key="driver.name" value="Oracle JDBC driver"/>
    <meta key="driver.version" value="12.2.0.1.0"/>
  </database>
  <table name="AO_0A5972_NOTIFICATION_SETTING">
    <column name="ID" primaryKey="true" autoIncrement="true" sqlType="2" precision="20"/>
    <column name="KEY" primaryKey="false" autoIncrement="false" sqlType="12" precision="255"/>
    <column name="TYPE" primaryKey="false" autoIncrement="false" sqlType="12" precision="255"/>
    <column name="USER_KEY" primaryKey="false" autoIncrement="false" sqlType="12" precision="255"/>
    <column name="VALUE" primaryKey="false" autoIncrement="false" sqlType="12" precision="255"/>
  </table>
  <data tableName="AO_733371_EVENT_PARAMETER">
      <column name="EVENT_ID"/>
      <column name="ID"/>
      <column name="NAME"/>
      <column name="VALUE"/>
      <row>
          <integer>3243959</integer>
          <integer>59623887</integer>
          <string>object#issue#created_date#0</string>
          <string>1590646764000</string>
      </row>
      <row>
          <integer>3489943</integer>
          <integer>64127343</integer>
          <string>object#issue#created_date#0</string>
          <string>1593114489000</string>
      </row>
      <row>
        <integer>3489943</integer>
        <integer>64127355</integer>
        <string>jira#status#oldstring#0</string>
        <string>To Do</string>
      </row>
  </data>
</backup>

I пробовал, но не повезло

xmlstarlet ed -d "/backup/data[@tableName='AO_733371_EVENT_PARAMETER']/row[integer=3489943]" sample.xml

Спасибо,

Энрике

1 Ответ

0 голосов
/ 06 августа 2020

В вашем файле используются XML пространства имен.

xmlstarlet edit -N xyz='http://www.atlassian.com/ao' --delete '//xyz:row[xyz:integer="3489943"]' file.xml
...