通过xidel使用xpath从xml文档中提取值

通过xidel使用xpath从xml文档中提取值,xml,xpath,xidel,Xml,Xpath,Xidel,尝试使用Xidel/Xpath从DNS XML输出的所有行中提取“文本和值”对,但无法使用此类表达式: xidel -e "/status/section[*]//item[*]@value/@text" 事实上,我无法将任何一对或一个值外插:-/有人更了解Xpath吗 顺便说一句:Stackoverflow输入框中显示了大部分代码,并要求我提供更多详细信息,但我不知道可以添加什么样的详细信息 源XML: <?xml version="1.0" encoding="utf-16"?>

尝试使用Xidel/Xpath从DNS XML输出的所有行中提取“文本和值”对,但无法使用此类表达式:

xidel -e "/status/section[*]//item[*]@value/@text"
事实上,我无法将任何一对或一个值外插:-/有人更了解Xpath吗

顺便说一句:Stackoverflow输入框中显示了大部分代码,并要求我提供更多详细信息,但我不知道可以添加什么样的详细信息

源XML:

<?xml version="1.0" encoding="utf-16"?>
<status>
  <section id="general" text="General Status">
    <item id="state" text="Current state" value="1" valueText="Running" />
    <item id="uptime" text="Server uptime" value="573262" valueText="6 days, 15 hours, 14 minutes, 22 seconds" />
    <item id="zones" text="DNS zones" value="13" />
    <item id="cached" text="DNS records cached" value="88756" />
  </section>
  <section id="InReq" text="DNS Requests Received">
    <item id="total" text="Total" value="20810744" />
    <item id="udp" text="UDP" value="20810402" />
    <item id="tcp" text="TCP" value="342" />
    <item id="rd" text="Recursive (RD)" value="20599874" />
    <item id="OpCode0" text="OpCode 0 - Request" value="20810732" />
    <item id="OpCode5" text="OpCode 5 - Update Request" value="1" />
    <item id="OpCode10" text="OpCode 10 - unknown" value="11" />
    <item id="QType1" text="Query record type A" value="16596407" />
    <item id="QType2" text="Query record type NS" value="4425" />
    <item id="QType5" text="Query record type CNAME" value="439" />
    <item id="QType6" text="Query record type SOA" value="13101" />
    <item id="QType12" text="Query record type PTR" value="1849989" />
    <item id="QType15" text="Query record type MX" value="8529" />
    <item id="QType16" text="Query record type TXT" value="41016" />
    <item id="QType28" text="Query record type AAAA" value="2084624" />
    <item id="QType29" text="Query record type LOC" value="2" />
    <item id="QType33" text="Query record type SRV" value="104612" />
    <item id="QType35" text="Query record type NAPTR" value="90" />
    <item id="QType38" text="Query record type A6" value="49" />
    <item id="QType43" text="Query record type DS" value="654" />
    <item id="QType48" text="Query record type DNSKEY" value="14" />
    <item id="QType51" text="Query record type NSEC3PARAM" value="1" />
    <item id="QType60" text="Query record type TYPE60" value="35" />
    <item id="QType99" text="Query record type SPF" value="16" />
    <item id="QType252" text="Query record type AXFR" value="6" />
    <item id="QType255" text="Query record type *" value="106719" />
    <item id="typeOther256" text="Other query types" value="4" />
    <item id="classIN" text="Query class IN" value="20810649" />
    <item id="classCH" text="Query class CH" value="80" />
    <item id="classOther256" text="Other query classes" value="3" />
  </section>
  <section id="DropReq" text="Dropped/Ignored DNS Requests">
    <item id="total" text="Total" value="510261" />
    <item id="repeat" text="Repeat requests" value="510261" />
    <item id="ipblock" text="IP Blocking" value="0" />
    <item id="stealth" text="Lame request Stealth option" value="0" />
    <item id="notify" text="Notify request not matched" value="0" />
    <item id="maxrecur" text="Exceeded max. parallel recursive" value="0" />
    <item id="ignoreroot" text="Ignored UDP request for &lt;root&gt;" value="0" />
    <item id="ignoreudpany" text="Ignored UDP 'ANY' request" value="0" />
    <item id="ignoreplugin" text="Ignore DNS request plug-in" value="0" />
  </section>
  <section id="OutResp" text="DNS Responses Sent">
    <item id="total" text="Total" value="20300475" />
    <item id="aa" text="Authoritative (AA)" value="176020" />
    <item id="tc" text="Truncated (TC)" value="1430" />
    <item id="ra" text="Recursion Available (RA)" value="20032753" />
    <item id="rcode0" text="RCODE 0 - No Error" value="16196886" />
    <item id="rcode1" text="RCODE 1 - Format Error" value="262" />
    <item id="rcode2" text="RCODE 2 - Server Failure" value="35985" />
    <item id="rcode3" text="RCODE 3 - Non-Existent Domain" value="3943192" />
    <item id="rcode4" text="RCODE 4 - Not implemented" value="80" />
    <item id="rcode5" text="RCODE 5 - Query Refused" value="124070" />
  </section>
  <section id="OutReq" text="DNS Requests Sent">
    <item id="total" text="Total" value="5220257" />
    <item id="notify" text="Notify" value="6" />
    <item id="zt" text="Zone transfer" value="7" />
    <item id="ixfr" text="Incremental zone transfer (IXFR)" value="53" />
    <item id="soarefresh" text="Zone SOA refresh" value="0" />
  </section>
  <section id="InResp" text="DNS Responses Received">
    <item id="total" text="Total" value="5152878" />
  </section>
  <ReqPerSec>39,42,48,40,38,36,40,41,26,31,35,18,26,31,19,32,19,32,35,45,22,24,33,18,32,35,17,34,46,37,29,25,46,55,22,36,35,36,40,34,44,34,40,36,21,17,20,36,17,33,31,26,23,27,40,51
,31,40,25,42</ReqPerSec>
</status>

39,42,48,40,38,36,40,41,26,31,35,18,26,31,19,32,19,32,35,45,22,24,33,18,32,35,17,34,46,37,29,25,46,55,22,36,35,36,40,34,44,34,40,36,21,17,20,36,17,33,31,26,23,27,40,51
,31,40,25,42
将返回:

Current state - 1
Server uptime - 573262
DNS zones - 13
等等

将在每行前面添加节id:

[general] Current state - 1
[general] Server uptime - 573262
[general] DNS zones - 13
等等

[编辑]
尽管变量的使用效果很好,但实际上并不是必需的,因为
元素节点的
id
属性(级别更高)可以通过在
前面加上前缀来访问

-e "//item/concat('[',../@id,'] ',@text,' - ',@value)"

[/edit]

刚刚发现有多个部分具有相同的“文本”内容,如“total”。是否可以在其调整大小的分区中进行distinc,例如,每行打印分区ID?这将最适合后续解析…谢谢,这正是我需要的,它给了我如何在Xpath中处理变量的提示;-)
[general] Current state - 1
[general] Server uptime - 573262
[general] DNS zones - 13
-e "//item/concat('[',../@id,'] ',@text,' - ',@value)"