지정된 다른 태그 내에 포함된 지정된 태그에 대해서만 하나의 태그 값을 다른 태그 값으로 바꾸는 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