我需要您的帮助,首先我要开始编写代码:
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 =“ .....时,一切正常,但我有它。
以下XPath应为您提供以下输入需要的东西基本上是:year
,title
,author
。这有点像上下遍历。
/bookstore/book/data/Data[@name='year'][.='2005']/preceding-sibling::*[@name='title'][.='Everyday Italian']/following-sibling::*[@name='author'][.='Giada De Laurentiis']/parent::*
可以更换2005
,Everyday Italian
,Giada De Laurentiis
与输入你喜欢。
它的工作方式是,首先获取Data
,year = 2005
然后获取的前一个兄弟title
,author
然后进行匹配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>'
对于不同的输入输出:2003
,Potter Potter
,Giada 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] 删除。
我来说两句