XML 파일 구조를 감사해야 하며 DOM 트리 구조만 표시하고 값은 생략하는 보고서를 생성해야 합니다. 기본적으로 노드 이름만 있고 값은 없습니다. xmllint 및 xmlstarlet을 사용해 보았지만 이를 수행하는 방법을 모르겠습니다.
이를 수행할 수 있는 도구나 위 도구의 예를 아는 사람이 있습니까?
cat $filename.xml | xmlstarlet format -t
나에게 필요한 것을 제공하지만 모든 가치를 무시하고 싶습니다.
답변1
xmllint
대화식 쉘 명령은 du
원하는 것을 제공하는 것 같습니다.
du PATH
Show the structure of the subtree under the given path or the current node.
대화형이 아닌 것을 원한다면 아마도
printf '%s\n' du exit | xmllint --shell file.xml
또는
xmllint --shell file.xml <<EOF
du
exit
EOF
전임자.
$ printf '%s\n' du exit | xmllint --shell rss.xml
/ > /
rss
channel
title
link
description
copyright
language
lastBuildDate
image
url
title
link
item
title
link
description
pubDate
item
title
link
description
pubDate
item
title
link
description
pubDate
/ >
답변2
이제 이미 사용하고 있으니 xmlstarlet
계속 사용하는 것이 좋습니다.
이 xmlstarlet
도구에는 "XML 문서의 요소 구조를 표시"하는 el
( ) 하위 명령이 있습니다.elements
기본적으로 다음과 같은 데이터가 출력됩니다.
$ xmlstarlet el /usr/X11R6/share/xcb/ge.xml
xcb
xcb/request
xcb/request/field
xcb/request/field
xcb/request/reply
xcb/request/reply/pad
xcb/request/reply/field
xcb/request/reply/field
xcb/request/reply/pad
속성을 얻을 수도 있습니다.
$ xmlstarlet el -a /usr/X11R6/share/xcb/ge.xml
xcb
xcb/@header
xcb/@extension-xname
xcb/@extension-name
xcb/@major-version
xcb/@minor-version
xcb/request
xcb/request/@name
xcb/request/@opcode
xcb/request/field
xcb/request/field/@type
xcb/request/field/@name
xcb/request/field
xcb/request/field/@type
xcb/request/field/@name
xcb/request/reply
xcb/request/reply/pad
xcb/request/reply/pad/@bytes
xcb/request/reply/field
xcb/request/reply/field/@type
xcb/request/reply/field/@name
xcb/request/reply/field
xcb/request/reply/field/@type
xcb/request/reply/field/@name
xcb/request/reply/pad
xcb/request/reply/pad/@bytes
당신은 또한 볼 수 있습니다 xmlstarlet el --help
.
val
( validate
) 하위 명령("XML 문서 유효성 검사(Well-formed/DTD/XSD/RelaxNG)")을 사용하여 xmlstarlet
XML 문서의 유효성을 검사합니다. 기본적으로 문서의 형식이 올바른지 확인만 하지만 제공된 XSD 스키마, 문서의 DTD 또는 Relax-NG 스키마에 대해 문서의 유효성을 검사할 수도 있습니다.
당신은 또한 볼 수 있습니다 xmlstarlet val --help
.