【问题标题】:creaing xpath expression for following xml为以下 xml 创建 xpath 表达式
【发布时间】:2012-09-06 20:49:44
【问题描述】:

我对 XPath 非常陌生,我正在创建一个 XPath 表达式以检索以下 xml 的多个元素

<ol>
<li>
    <a data- key="abc(/parent)" value="superval)">Parent</a> 
    <ol>
     <li>
        <a data-key="abc(/parent/1)" data-value="parent-val">Parent/1</a>
       <ol>
       <li>
          <a data-key="abc(/parent/1/1)" data-value="xyz">Parent/1/1</a>
       </li>
       <li>
          <a data-key="abc(/parent/1/2)" data-value="xyz">Parent/1/2</a>
       </li>
      <li>
          <a data-key="abc(/parent/1/3)" data-value="xyz">Parent/1/3</a>
       </li>
       <li>
          <a data-key="abc(/parent/1/4)" data-value="xyz">Parent/1/4</a>
       </li>
    </ol>
   </li>
 </ol>
 </li>
 <li>
  <a data-key="bcd/(parent1)" value="superval">Parent1</a>
 <ol>
     <li>
        <a data-key="bcd(/parent1/1)" data-value="parent-val">Parent1/1</a>
       <ol>
       <li>
          <a data-key="bcd(/parent1/1/1)" data-value="xyz">Parent1/1/1</a>
       </li>
       <li>
          <a data-key="bcd(/parent1/1/2)" data-value="xyz">Parent1/1/2</a>
       </li>
     <li>
          <a data-key="bcd(/parent1/1/3)" data-value="xyz">Parent1/1/3</a>
       </li>
       <li>
          <a data-key="bcd(/parent1/1/4)" data-value="xyz">Parent1/1/4</a>
       </li>
    </ol>
  </li>
 </ol>
</li>
</ol>

上面的xml只是一个例子,每个父级可以包含多个子级值。我需要搜索数据键值从(parent/1/1/1)到(parent/1/1/4)的元素,并为这些键提取与其关联的属性value 的值。数据键值也可以跨越不同的父级,例如 (parent/1/1/1) 到 (parent/1/1/2)。

我需要为上述两种情况创建 XPath 表达式。我试过使用这个 XPath 表达式

//*[@data-key='abc(/parent/1/1/1)'] 

但它只给了我一个 &lt;a&gt; 元素,因为我需要一系列元素。我是 XPath 的新手,所以这方面的任何帮助都会很有用。

提前非常感谢。 阿希什

【问题讨论】:

  • 您尝试从哪种编程语言或系统中使用 XPath 来处理此 XML?
  • 我正在使用 C++,其中我正在使用 libXML 库来解析这个 XML。

标签: xpath


【解决方案1】:

尝试使用 contains() 函数,使用您要查找的范围,如下所示:

//*[contains(@data-key,'abc(/parent/1/1/)')] 

这将为您提供具有至少具有该根的数据键的所有节点,例如在您的示例中为 (parent/1/1/1) 到 (parent/1/1/4)。虽然您提供的 xml sn-p 不包含该范围的数据键,但您可以将斜杠/数字编辑为您想要的。

【讨论】:

    猜你喜欢
    • 2014-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-21
    相关资源
    最近更新 更多