1

I need to delete all <row> nodes with <integer>3489943</integer> using xmlstarlet but I cannot figure out the xpath.

A fragment of the file is as follows

<?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 have tried this but no luck

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

Thanks,

Enrique

1
  • Please add your desired output (no description) for that sample input to your question (no comment). Commented Aug 6, 2020 at 18:56

1 Answer 1

1

Your file uses XML namespaces.

xmlstarlet edit -N xyz='http://www.atlassian.com/ao' --delete '//xyz:row[xyz:integer="3489943"]' file.xml
Sign up to request clarification or add additional context in comments.

1 Comment

Actually I have more <data tableName="ANOTHER NAME"> entries that I want to keep intact, so the working query is xmlstarlet edit -N xyz='http://www.atlassian.com/ao' --delete '/xyz:backup/xyz:data[@tableName="AO_733371_EVENT_PARAMETER"]/xyz:row[xyz:integer="3489943"]' . Your answer put me in the right track. Thank you so much.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.