如何为 XML 消息制作 XPath 列表?

如何为 XML 消息制作 XPath 列表?

如何为 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 消息的属性。

提取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 命令“管道”以下 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...

其余命令用于解析此输出。

相关内容