在xpath中获取特定数据

布拉德利546994

我需要您的帮助,首先我要开始编写代码:

bookmod.xml

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>

<book category="COOKING">
    <insystem>
        <t>asdgas</t>
        <b>asdgas</b>
    </insystem>
    <data>
  <Data name="title">Everyday Italian</Data>
  <Data name="author">Giada De Laurentiis</Data>
  <Data name="year">2005</Data>
  <Data name="price">30.00</Data>
  </data>
</book>

<book category="CHILDREN">
    <insystem>
        <t>asdgas</t>
        <b>asdgas</b>
    </insystem>
    <data>

  <Data name="title">Potter Potter</Data>
  <Data name="author">Giada De Laurentiis</Data>
  <Data name="year">2003</Data>
  <Data name="price">30.00</Data>
    </data>
</book>

<book category="WEB">
    <insystem>
        <t>asdgas</t>
        <b>asdgas</b>
    </insystem>
    <data>

  <Data name="title">asdgasd Potter</Data>
  <Data name="author">Giada De Laurentiis</Data>
  <Data name="year">2005</Data>
  <Data name="price">30.00</Data>
    </data>
</book>

<book category="WEB">
    <insystem>
        <t>asdgas</t>
        <b>asdgas</b>
    </insystem>
    <data>

  <Data name="title">web book</Data>
  <Data name="author">Giada De Laurentiis</Data>
  <Data name="year">2005</Data>
  <Data name="price">30.00</Data>
    </data>
</book>

</bookstore>

index.php

<!DOCTYPE html>
<html>
<body>
<script>

function loadXMLDoc(dname)
{
if (window.XMLHttpRequest)
  {
  xhttp=new XMLHttpRequest();
  }
else
  {
  xhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xhttp.open("GET",dname,false);
try {xhttp.responseType="msxml-document"} catch(err) {} // Helping IE
xhttp.send("");
return xhttp;
}

var x=loadXMLDoc("bookmod.xml");
var xml=x.responseXML;
path="/bookstore/book/data/Data";

// code for IE
if (window.ActiveXObject || xhttp.responseType=="msxml-document")
{
xml.setProperty("SelectionLanguage","XPath");
nodes=xml.selectNodes(path);
for (i=0;i<nodes.length;i++)
  {
  document.write(nodes[i].childNodes[0].nodeValue);
  document.write("<br>");
  }
}

// code for Chrome, Firefox, Opera, etc.
else if (document.implementation && document.implementation.createDocument)
{
var nodes=xml.evaluate(path, xml, null, XPathResult.ANY_TYPE, null);
var result=nodes.iterateNext();

while (result)
  {
  document.write(result.childNodes[0].nodeValue);
  document.write("<br>");
  result=nodes.iterateNext();
  }
}

</script>
</body>
</html>

在路径中,我也尝试:/ bookstore / book / data [Data = 2005] / Data [@ name ='year']

还有很多其他...

它基本上意味着一个XML文件很大,我只需要查找<data name="year">== 2005的那些文件

我尝试了许多方法和生成器,但仍然无法处理它:(

如果您可以输入标题和作者,那就太好了。


编辑:

<book xmlns="http://schemas.microsoft.com/win/2004/08/events/event">

我不知道为什么,但是不起作用

您知道解决此问题的方法吗?当我删除xmlns =“ .....时,一切正常,但我有它。

SomeDude

以下XPath应为您提供以下输入需要的东西基本上是:yeartitleauthor这有点像上下遍历。

/bookstore/book/data/Data[@name='year'][.='2005']/preceding-sibling::*[@name='title'][.='Everyday Italian']/following-sibling::*[@name='author'][.='Giada De Laurentiis']/parent::*

可以更换2005Everyday ItalianGiada De Laurentiis与输入你喜欢。

它的工作方式是,首先获取Datayear = 2005然后获取的前一个兄弟titleauthor然后进行匹配title,然后获取其后一个兄弟(其author给定输入匹配项),最后获取其父data元素以返回整个元素。

上面的xpath的输出是:

'<data> <Data name="title">Everyday Italian</Data> <Data name="author">Giada De Laurentiis</Data> <Data name="year">2005</Data> <Data name="price">30.00</Data> </data>'

对于不同的输入输出:2003Potter PotterGiada De Laurentiis

'<data> <Data name="title">Potter Potter</Data> <Data name="author">Giada De Laurentiis</Data> <Data name="year">2003</Data> <Data name="price">30.00</Data> </data>'

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从特定数量的行中获取数据

来自分类Dev

从MySQL表中获取特定数据

来自分类Dev

如何从数组中获取特定数据?

来自分类Dev

从数组中获取特定数据

来自分类Dev

从对象中获取特定数据

来自分类Dev

如何从 Firebase 中获取特定数据

来自分类Dev

从txt文件中获取特定数据

来自分类Dev

如何从 MySQL 的特定列中获取特定数据?

来自分类Dev

如何根据条件从数据块中获取特定数据

来自分类Dev

从数据库中获取特定数据

来自分类Dev

从数据库中获取特定数据

来自分类Dev

从熊猫数据框中获取特定数据

来自分类Dev

从数据库中获取特定数据并打印

来自分类Dev

从PHP中的重复记录中获取特定数据

来自分类Dev

从PHP中的重复记录中获取特定数据

来自分类Dev

如何从 Typescript 中的对象数组中获取特定数据?

来自分类Dev

从XML获取特定数据

来自分类Dev

从URI获取特定数据

来自分类Dev

从html获取特定数据

来自分类Dev

从XML获取特定数据

来自分类Dev

从curl获取特定数据

来自分类Dev

在MongoDB Node.js中获取特定数据

来自分类Dev

PHP-在表格中获取特定数据

来自分类Dev

从多维数组jQuery中获取特定数据

来自分类Dev

从我的模型中获取特定数据-Django

来自分类Dev

如何从文本文件中获取特定数据

来自分类Dev

如何从JSON列表中获取特定数据

来自分类Dev

在AS3中从PHP获取特定数据

来自分类Dev

如何从JAVA中的html文件获取特定数据