2013-06-11 5 views
0

У меня есть XML-файл, содержащий информацию о пользователях. Я хочу автоматизировать модификацию и удаление пользователей и до сих пор успешную с удалением с помощью XmlStarlet. Теперь я не знаю, как изменить информацию о пользователях, выполнив поиск по имени пользователя. Может кто-нибудь помочь мне с командой, как изменить с помощью XMLStarletКоманда XML Starlet Modify для сложного XML

<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> 

Заранее спасибо

ответ

0

Что-то вроде этого? (Заблокировать пользователя с именем пользователя «IAM_User7»)

xmlstarlet ed -u '/table/row[column[@name = "USERNAME"] = "IAM_User7"]/column[@name = "LOCKED"]' -v 1 table.xml 

Предполагая, что table.xml содержит содержание в этом вопросе.


Чтобы добавить новый пользователь, к сожалению, довольно утомительно, это только первые 2 поля:

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, это можно использовать ранее версии с уродливыми трюками).

+0

спасибо, но он не работает, вы можете проверить его, пожалуйста, проверьте – Techie

+0

@techie, пожалуйста, объясните, что вы подразумеваете под словом «не работает». Я просто заметил, что пропустил имя файла, возможно, это проблема. – npostavs

+0

работает отлично, спасибо за помощь. Можете ли вы рассказать мне, как добавить, хорошо, что будет отлично – Techie

Смежные вопросы