加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

xml – XPath通配符和contains()函数用法

发布时间:2020-12-16 07:43:46 所属栏目:百科 来源:网络整理
导读:我使用XPath并包含函数有问题.想象下面的 XML示例: doc Test Name1 Pre Histoy/Name TypeKnown/Type Data NameDinasor/Name NameFish/Name /Data /Test Test Name1 Post Histoy/Name TypeKnown/Type Data NameHuman/Name NameDog/Name /Data /Test Test Nam
我使用XPath并包含函数有问题.想象下面的 XML示例:
<doc>  
     <Test>
       <Name>1 Pre Histoy</Name>
       <Type>Known</Type>
       <Data>
          <Name>Dinasor</Name>
          <Name>Fish</Name>
      </Data>
      </Test>

      <Test>
        <Name>1 Post Histoy</Name>
        <Type>Known</Type>
        <Data>
          <Name>Human</Name>
          <Name>Dog</Name>
        </Data>
     </Test>

      <Test>
        <Name>1 Post Histoy</Name>
        <Type>UNKNOWN</Type>
        <Data>
          <Name>Human</Name>
          <Name>Dog</Name>
        </Data>
     </Test>  

  </doc>

所以我想做的是返回所有< Name> < Data>内的文本节点,具有以下标准:

> doc // Test / Name应包含“Pre”文本
> doc //测试/类型应该是“已知”

我需要的是一个这样的查询,但到目前为止我无法管理它

/doc//Test[Name contains(.,'Pre') and Type='Known']/data//Name

任何帮助和提示将不胜感激.

尝试这个:
/doc/Test[contains(Name,"Pre") and Type="Known"]/Data/Name

这是一个在Javascript中实现的工作示例,以利用StackOverflow’s Runnable Code Snippets

function fu(path){
  var output = "";
  var results =  document.evaluate(path,document,null,XPathResult.ANY_TYPE,null);
  while(nextResult = results.iterateNext()){ output += nextResult.outerHTML + "n"; }
  return output;
}

document.body.innerText = fu('//doc/Test[contains(Name,"Pre") and Type="Known"]/Data/Name');
<doc>  
 <Test>
   <Name>1 Pre Histoy</Name>
   <Type>Known</Type>
   <Data>
      <Name>Dinasor</Name>
      <Name>Fish</Name>
  </Data>
  </Test>

  <Test>
    <Name>1 Post Histoy</Name>
    <Type>Known</Type>
    <Data>
      <Name>Human</Name>
      <Name>Dog</Name>
    </Data>
 </Test>

  <Test>
    <Name>1 Post Histoy</Name>
    <Type>UNKNOWN</Type>
    <Data>
      <Name>Human</Name>
      <Name>Dog</Name>
    </Data>
 </Test>  

  </doc>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读