如何為 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 相關的工具包。
我在 Linux 中嘗試使用 xml_grep 。它需要 XPATH 作為輸入來取得資料內容。我無法使用 xml_grep 來提取 XML 訊息的屬性。
擷取XPATHs/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 指令「管道」以下 xmllint shell 指令
# 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...
其餘命令用於解析此輸出。