나는 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
하위 노드를 추가하려면 or가 -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
작업을 추가할 수 있습니다. -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