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

하위 노드를 추가하려면 다음 이 -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-Led

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

관련 정보