Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于复杂XML的XML Starlet修改命令_Xml_Xml Parsing_Xmlstarlet - Fatal编程技术网

用于复杂XML的XML Starlet修改命令

用于复杂XML的XML Starlet修改命令,xml,xml-parsing,xmlstarlet,Xml,Xml Parsing,Xmlstarlet,我有一个包含用户身份信息的XML文件。我希望能够自动修改和删除用户,并使用XmlStarlet成功地删除用户。现在我不知道如何通过用户名搜索来修改用户信息。有谁能帮助我使用xmlstarlet修改命令吗 <table name="MANAGED_USER" keys="CONTEXT_ID,USERNAME"> <row> <column name="USERNAME">IAM_User7</column> &

我有一个包含用户身份信息的XML文件。我希望能够自动修改和删除用户,并使用XmlStarlet成功地删除用户。现在我不知道如何通过用户名搜索来修改用户信息。有谁能帮助我使用xmlstarlet修改命令吗

    <table name="MANAGED_USER" keys="CONTEXT_ID,USERNAME">
     <row>
     <column name="USERNAME">IAM_User7</column>
     <column name="CONTEXT_ID">PROVCLIENT</column>
     <column name="ALGORITHM">DESEDE</column>
     <column name="PASSWORD">2e02f952e8743b36</column>
     <column name="FAILED_LOGINS">0</column>
     <column name="REALNAME">IAM User 7</column>
     <column name="VALIDFROM">2013-06-03 00:00:00.0</column>
     <column name="VALIDUNTIL">2014-06-01 00:00:00.0</column>
     <column name="USER_TYPE">1</column>
     <column name="LOCKED">0</column>
     <column name="CHANGED_BY">tam</column>
     <column name="ORGANISATION_NAME" is_null="true">null</column>
    </row>
    </table>

我是User7
PROVCLIENT
德塞德
2e02f952e8743b36
0
IAM用户7
2013-06-03 00:00:00.0
2014-06-01 00:00:00.0
1.
0
谭
无效的
提前谢谢诸如此类的事?(使用用户名“IAM_User7”锁定用户)

假设
table.xml
包含问题中的内容


不幸的是,添加新用户非常繁琐,这只是前两个字段:

xmlstarlet ed -s /table -t elem -n row -v '' \
    --var new '$prev' \
    -s '$new' -t elem -n column -v IAM_User8 \
    -s '$prev' -t attr -n name -v USERNAME \
    -s '$new' -t elem -n column -v PROVCLIENT \
    -s '$prev' -t attr -n name -v CONTEXT_ID \
    table.xml

需要版本1.4.0或更高版本(对于
--var
$prev
;可以使用具有丑陋技巧的早期版本)。

谢谢,但它不起作用,您能测试它以验证吗please@techie请解释一下“不工作”是什么意思。我只是注意到我错过了文件名,也许这就是问题所在。工作正常,非常感谢您的帮助。你能告诉我怎么加吗,那将是great@Techie:您的意思是添加新用户?这是可行的,但相当冗长。请参阅我的编辑。
xmlstarlet ed -s /table -t elem -n row -v '' \
    --var new '$prev' \
    -s '$new' -t elem -n column -v IAM_User8 \
    -s '$prev' -t attr -n name -v USERNAME \
    -s '$new' -t elem -n column -v PROVCLIENT \
    -s '$prev' -t attr -n name -v CONTEXT_ID \
    table.xml