저는 cygwin에서 xmllint의 대화형 쉘을 사용하고 있습니다. 노드 수를 세고 싶지만 xmllint가 예상한 대로 작동하지 않는 것 같습니다.
$> cat test.xml
<?xml version="1.0"?>
<result>
<node>
<item/>
<item/>
<item/>
<item/>
<item/>
</node>
</result>
$> xmllint --shell test.xml
/ > cat count(/result/node/item)
count(/result/node/item) is a number
숫자라고 나와 있지만 웹 검색에서 본 것처럼 숫자가 표시되지는 않습니다.
count(/result/node/item) is a number : 5
여기서 무슨 문제가 있습니까?
$> xmllint --version
xmllint: using libxml version 20706
compiled with: Threads Tree Output Push Reader Patterns Writer SAXv1 FTP HTTP DTDValid HTML Legacy C14N Catalog XPath XPointer XInclude Iconv ISO8859X Unicode Regexps Automata Expr Schemas Schematron Modules Debug Zlib
답변1
@Stephane이 댓글에서 이것을 언급했다는 것을 알고 있지만 이 기술을 발견하고 동일한 솔루션에 대한 그의 댓글을 보기 전에 이 답변을 게시하려고 했습니다. 이 작업의 에티켓은 확실하지 않지만 그것이 제가 찾은 것입니다. 타인의 댓글에 게시된 답변이 부적절한 경우, LMK와 저는 해당 답변을 삭제할 수 있습니다.
해결책
xpath
함수에서 반환된 결과를 표시하려면 xmllint의 명령을 사용해야 합니다 count
.
$ xmllint --shell test.xml
/ > cat
<?xml version="1.0"?>
<result>
<node>
<item/>
<item/>
<item/>
<item/>
<item/>
</node>
</result>
/ > xpath count(/result/node/item)
Object is a number : 5
/ >
이 사이트에서 답을 찾았습니다:xmllint 셸에서 XPath 표현식 사용.