저는 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 표현식 다루기.