xmlstarlet을 사용하여 새 요소 만들기

xmlstarlet을 사용하여 새 요소 만들기

나는 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-Led

xmlstarlet ed -L -s /levela/levelb -t elem -n levelc -v "" \
    -s //levelc -t elem -n "element1" -v "value1" \
    file.xml

관련 정보