使用 xmlstarlet 搜索删除 XML 上的节点

Delete nodes on XML using xmlstarlet searching

我需要使用 xmlstarlet 删除所有具有 <integer>3489943</integer><row> 节点,但我无法确定 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>

我已经试过了,但没有成功

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

谢谢,

恩里克

您的文件使用 XML 个命名空间。

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