xmlstarlet基于文本值选择同级

xmlstarlet基于文本值选择同级,xml,xpath,xmlstarlet,Xml,Xpath,Xmlstarlet,我一直在尝试用不同的方法来解决这个问题,但找不到正确的方法。 以下是xml文件: <?xml version="1.0" encoding="UTF-8"?> <Package xmlns="http://soap.sforce.com/2006/04/metadata"> <types> <members>PriceRule__c.All</members> <members>Price

我一直在尝试用不同的方法来解决这个问题,但找不到正确的方法。 以下是xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
  <types>
        <members>PriceRule__c.All</members>
        <members>PriceRule__c.None</members>
        <members>ProductRule__c.All</members>
        <members>Quote__c.All_Quotes</members>
        <members>SummaryVariable__c.All</members>
        <name>ListView</name>
  </types>
  <types>
        <members>*</members>
        <name>AnalyticSnapshot</name>
  </types>
</Package>
这将打印出:

PriceRule__c.All PriceRule__c.None
但我需要的是一种获取值的方法ListView 你知道XPath应该是怎样的吗? 提前谢谢你

将XPath更改为

//x:types[starts-with(x:members,'PriceRule__c')]/x:name

您将根据请求选择带有值的
x:name
ListView

我不清楚“x:”在示例中代表什么。@BillHileman:它是一个名称空间前缀,由OP通过xmlstarlet中的
-N
定义,以覆盖XML文档中的默认名称空间。看见
//x:types[starts-with(x:members,'PriceRule__c')]/x:name