使用 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
我需要使用 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