XML 파일을 읽고 노드 이름과 구조만 추출합니다.

XML 파일을 읽고 노드 이름과 구조만 추출합니다.

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)")을 사용하여 xmlstarletXML 문서의 유효성을 검사합니다. 기본적으로 문서의 형식이 올바른지 확인만 하지만 제공된 XSD 스키마, 문서의 DTD 또는 Relax-NG 스키마에 대해 문서의 유효성을 검사할 수도 있습니다.

당신은 또한 볼 수 있습니다 xmlstarlet val --help.

관련 정보