在 xmlint 中合并来自多个 xpath 的结果

Combine results from multiple xpaths in xmlint

我想要 return 多个 --xpath 短语的结果。我试过了

xmllint --xpath '//ItemGroup/Content/@Include' --xpath '//ItemGroup/None/@Include' --xpath '//Compile/@Include' -

这return只是最后一个xpath

我使用 concat() 尝试过同样的事情,但是 return 每个 xpath 中只有一个匹配项:

xmllint  --xpath "concat(concat(//ItemGroup/None/@Include,' ', //ItemGroup/Content/@Include), ' ', //ItemGroup/Compile/@Include)" -

你应该这样union operator |

xmllint --xpath '//ItemGroup/Content/@Include | //ItemGroup/None/@Include | //Compile/@Include' input.xml

有样品XML喜欢

<?xml version="1.0" encoding="UTF-8"?>
<class>
    <ItemGroup>
        <Content Include="First Item"> aaa </Content>
        <None Include="Third Item"> bbb </None>
        <Content Include="Second Item"> aaa </Content>
    </ItemGroup>
    <parent>
        <Compile Include="Compiling is great"> aaa </Compile>
        <sub2> bbb </sub2>
    </parent>
</class>

输出是:

Include="First Item" Include="Third Item" Include="Second Item" Include="Compiling is great"

这确实适用于 XPath-1.0。