小编Mar*_*ski的帖子

使用 xmlstarlet 进行 XPath 查询

我有与此类似的 XML:

<orders>
        <orderCompleteRequestType>
                <Head>
                        <Aufnr>11111</Aufnr>
                </Head>
                <Register>
                        <Id>180</Id>
                        <value1>11</value1>
                        <value2>22</value2>
                </Register>
                <Register>
                        <Id>181</Id>
                        <value1>3</value1>
                        <value2>43</value2>
                </Register>
                <Register>
                        <Id>160</Id>
                        <value1>5</value1>
                        <value2>25</value2>
                </Register>
        </orderCompleteRequestType>
        <orderCompleteRequestType>
                <Head>
                        <Aufnr>22222</Aufnr>
                </Head>
                <Register>
                        <Id>280</Id>
                        <value1>1</value1>
                        <value2>12</value2>
                </Register>
                <Register>
                        <Id>160</Id>
                        <value1>12</value1>
                        <value2>7</value2>
                </Register>
                <Register>
                        <Id>281</Id>
                        <value1>94</value1>
                        <value2>22</value2>
                </Register>
        </orderCompleteRequestType>
</orders>
Run Code Online (Sandbox Code Playgroud)

我想以 CSV 格式从每个“orderCompleteRequestType”结构中选择一些值:

  • 头/奥夫恩
  • 注册/ID
  • 寄存器/值1
  • 寄存器/值2

使用以下命令行时:

xmlstarlet sel -T -t -m "/orders/orderCompleteRequestType" -v "Head/Aufnr" -o ";" -v "Register/Id" -o ";" -v "Register/value1" -o ";" -v "Register/value2" -n -n test.xml
Run Code Online (Sandbox Code Playgroud)

我得到:

11111;180
181
160;11
3 …
Run Code Online (Sandbox Code Playgroud)

xml xpath xmlstarlet

6
推荐指数
1
解决办法
3817
查看次数

标签 统计

xml ×1

xmlstarlet ×1

xpath ×1