XML 파일에 새 요소를 추가하려고 했습니다.
원본 파일:
<levela>
<levelb>
</levelb>
</levela>
다음과 같은 결과를 얻으려고 합니다.
<levela>
<levelb>
<levelc>
<element1>value1</element1>
<element2>value2</element2>
<element3>value3</element3>
</levelc>
</levelb>
</levela>
내 현재 시도는 다음과 같습니다
xmlstarlet ed -a /levela/lelvelb -t elem -n levelc -v "" \
-i //levelc -t elem -n "element1" -v "value1" \
file.xml
하지만 내 파일은 업데이트되지 않습니다.
답변1
통화에 오타 xmlstarlet
( )가 있습니다 lelvelb
.
xmlstarlet ed -a /levela/lelvelb -t elem -n levelc -v "" \
-i //levelc -t elem -n "element1" -v "value1" \
file.xml
하위 노드를 추가하려면 다음 이 -s
아닌 작업을 사용해야 합니다 .-a
-i
xmlstarlet ed -s /levela/levelb -t elem -n levelc -v "" \
-s //levelc -t elem -n "element1" -v "value1" \
file.xml
이것은 생산할 것입니다
<?xml version="1.0"?>
<levela>
<levelb>
<levelc><element1>value1</element1><element2>value2</element2></levelc></levelb>
</levela>
-s
필요에 따라 다른 작업을 추가 할 수 있습니다 . Null -v
값을 제거할 수도 있습니다 levelc
.
file.xml
표준 출력으로 변환 결과를 얻는 대신 자체적으로 수정하려면 다음 옵션을 추가하세요.xmlstarlet
-L
ed
xmlstarlet ed -L -s /levela/levelb -t elem -n levelc -v "" \
-s //levelc -t elem -n "element1" -v "value1" \
file.xml