XML 파일의 다른 특정 태그 내에 포함된 특정 태그의 이름을 바꾸는 방법

XML 파일의 다른 특정 태그 내에 포함된 특정 태그의 이름을 바꾸는 방법

지정된 다른 태그 내에 포함된 지정된 태그에 대해서만 하나의 태그 값을 다른 태그 값으로 바꾸는 xmlstarlet 명령은 무엇입니까?

예: 모든 태그 발생을 검색합니다. 해당 태그가 태그 내에(다른 태그 내에) 있는 경우에만 b다음으로 바꿔야 합니다.d<a> ... </a>

  • 입력 예:
    <c>This is <b>an example</b>. <a>This is <b>a test;</b></a></c>
    
  • 원하는 출력:
    <c>This is <b>an example</b>. <a>This is <d>a test;</d></a></c>
    

이 기사는 관련이 있습니다지정된 일부 태그의 특정 문자열을 XML 파일의 태그에 포함된 다른 문자열로 바꾸는 방법솔루션에서 xml 파일 형식을 지정하는 방법을 찾으려고 합니다.

답변1

$ cat file 
<c>This is <b>an example</b>. <a>This is <b>a test;</b></a></c>
$ xmlstarlet ed --rename '//a/b' -v 'd' file 
<?xml version="1.0"?>
<c>This is <b>an example</b>. <a>This is <d>a test;</d></a></c>

b그러면 노드 바로 아래에 나타나는 a모든 노드의 이름이 변경됩니다 . 이러한 노드의 새 이름은 입니다 d. XPath 표현식 앞에서 이를 사용하고 있으므로 //문서 구조에서 노드가 어디에 있는지는 중요하지 않습니다 a/b.a

관련 정보