이 고정 된 XML 파일로 :
<?xml version="1.0"?>
<root>
<fixed NameCategory="Birds">
<Added>
<value name="Duck" count="1"/>
<value name="Dove" count="2"/>
</Added>
<Deleted>
<value name="crow" count="1"/>
<value name="crane" count="10"/>
</Deleted>
</fixed>
<fixed NameCategory="Humans">
<value name="john" count="1"/>
</fixed>
</root>
표시 추가 새 :
xmlstarlet select --template --value-of "//root/fixed[@NameCategory='Birds']/Added/value/@name" --nl file.xml
출력 :
Duck
Dove
012 3,516,
카운트 추가 새 :
xmlstarlet select --template --value-of "count(//root/fixed[@NameCategory='Birds']/Added/value/@name)" file.xml
출력 :
2
카운트 추가 한 명령으로 조류와 인간을 삭제 :
xmlstarlet select --template \
--value-of "count(//root/fixed[@NameCategory='Birds']/Added/value/@name)" --nl \
--value-of "count(//root/fixed[@NameCategory='Birds']/Added/value/@name)" --nl \
--value-of "count(//root/fixed[@NameCategory='Humans']/value/@name)" --nl file.xml
출력 :
앞에 둔 텍스트와
:
xmlstarlet select --template \
--value-of "concat('Total No Of Added Birds=',count(//root/fixed[@NameCategory='Birds']/Added/value/@name))" --nl \
--value-of "concat('Total No Of Deleted Birds=',count(//root/fixed[@NameCategory='Birds']/Deleted/value/@name))" --nl \
--value-of "concat('Total No Of Added Humans=',count(//root/fixed[@NameCategory='Humans']/value/@name))" --nl file.xml
출력 :
Total No Of Added Birds=2
Total No Of Deleted Birds=2
Total No Of Added Humans=1
참조 : xmlstarlet select --help
이 당신의 XML이 잘 형성되지 않는다. 왜 텍스트 기반 솔루션이 특수화 된 xml 기반 도구보다 낫다고 생각합니까? – karakfa
예. 헤더가 분명히 깨졌고 루트 요소가 부족하다는 것이 문제 였지만 ''와 첫눈에 작은 따옴표를 잘못 사용했다는 사실을 놓쳤습니다.이 * really *는 XML 인식 도구를 통해 먹을 수 있으며 그렇지 않으면 가능한 많은 답변을 차단합니다. @missi, 아마도 "XML과 같은"문법 (실제 문서가 실제로 XML이 아닌 경우)을 지정하기 위해이를 편집하거나, 실제로 구문 분석하도록 편집 할 수 있습니까? –
파일이 여전히 유효한 XML이 아닙니다. 파일을 붙여 넣기하여 구문을 확인하십시오. https://validator.w3.org/#validate-by-input – Cyrus