XML 메시지에 대한 XPath 목록을 만드는 방법은 무엇입니까?
내 스레드에 응답하고 이 문제를 조사해 주셔서 감사합니다. 올바른 형식의 XML 메시지가 있습니다. 목록/보고서를 다음과 같이 생성하고 싶습니다.
1) XML 메시지의 모든 Xpath
2) Xpath, 이 XPATH에 대한 데이터 콘텐츠
여기에 예가 있습니다.
<?xml version="1.0"?>
<PARTS>
<TITLE>Computer Parts</TITLE>
<PART>
<ITEM>Motherboard</ITEM>
<MANUFACTURER>ASUS</MANUFACTURER>
<MODEL>P3B-F</MODEL>
<COST> 123.00</COST>
</PART>
<PART>
<ITEM>Video Card</ITEM>
<MANUFACTURER>ATI</MANUFACTURER>
<MODEL>All-in-Wonder Pro</MODEL>
<COST> 160.00</COST>
</PART>
<PART>
<ITEM>Sound Card</ITEM>
<MANUFACTURER>Creative Labs</MANUFACTURER>
<MODEL>Sound Blaster Live</MODEL>
<COST> 80.00</COST>
</PART>
<PART>
<ITEM>inch Monitor</ITEM>
<MANUFACTURER>LG Electronics</MANUFACTURER>
<MODEL> 995E</MODEL>
<COST> 290.00</COST>
</PART>
</PARTS>
XML 목록을 수동으로 만들었습니다.
/PARTS/TITLE Computer Parts
/PARTS/PART[1]/ITEM Motherboard
/PARTS/PART[1]/MANUFACTURER ASUS
/PARTS/PART[1]/MODEL P3B-F
/PARTS/PART[1]/COST 123.00
/PARTS/PART[2]/ITEM Video Card
/PARTS/PART[2]/MANUFACTURER ATI
............
..............
..................
...................
XMLSPY가 있는데 XMLSPY와 관련된 추가 도구 키트가 없습니다.
나는 리눅스에서 xml_grep을 사용해 보았습니다. 데이터 콘텐츠를 얻으려면 입력으로 XPATH가 필요합니다. xml_grep을 사용하여 XML 메시지의 속성을 추출할 수 없습니다.
XPATH/XPATH, 데이터 콘텐츠를 추출하는 방법은 무엇입니까?
도와 줘서 고맙다.
답변1
비슷한 질문에 대한 답변은 다음과 같습니다. p
echo -e "setrootns\ncd defaultns:beans\ndir *" | xmllint --shell applicationContext.xml | grep -v -E ' TEXT| content=' | gawk 'BEGIN{ RS="ELEMENT "; FS=" *\n"} { print "/beans/" $1 "/@" $2 }' | sed -re 's/ +ATTRIBUTE // | uniq'
/beans// > setrootns/@/ > cd defaultns:beans
/beans/jaxrs:server/@id
/beans/bean/@id
/beans/import/@resource
echo 명령은 다음inf xmllint 쉘 명령을 "파이프"합니다.
# tell xmllint this xml has namespace declarations (not your case)
setrootns
# move to the first root node (PARTS in your case)
cd defaultns:beans
# list node contents
dir *
결과:
/ > setrootns
/ > cd defaultns:beans
beans > dir *
ELEMENT jaxrs:server
ATTRIBUTE id
TEXT
content=CreateSurveyService
ATTRIBUTE address
TEXT
content=/services
ELEMENT bean
ATTRIBUTE id
TEXT
content=routingDataSource
ATTRIBUTE class
TEXT
content=com.lsr.usc.datasource.routing.RegionCod...
나머지 명령은 이 출력을 구문 분석하는 데 사용됩니다.