选择一个具有具有特定值的子节点的特定节点
Select a specific node which has a child node with specific value
我有这样的东西:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<Row>
<Cell>some value</Cell>
<Cell>some value</Cell>
... continues with around 800 other Cells
</Row>
...continues with around 2000 other Rows
第一个问题:通过使用xpath来选择xml数据,我希望选择一个具有特定值的单元格的Row。我怎样才能做到这一点?它的xpath语法是什么?
第二个问题:我的xml数据大约有160万行代码,从中选择数据需要很长时间,除了它的重量大约为80Mbs!如何使这个过程更加有效并提高性能?p.n我使用下面的代码来检索xml数据:
function loadXMLDoc(dname)
{
xhttp=new XMLHttpRequest();
xhttp.open("GET", dname ,false);
xhttp.send("");
return xhttp;
}
var x=loadXMLDoc("data/data.xml");
var xml=x.responseXML;
path="some path";
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();
}
}
回答问题的第一部分:
//row[./cell/text() = '3']
将此XPath表达式应用于以下XML
<root>
<row>
<cell>1</cell>
<cell>2</cell>
</row>
<row>
<cell>3</cell>
<cell>4</cell>
</row>
</root>
产生以下输出:
> xmllint -xpath "//row[./cell/text() = '3']" test.xml
<row>
<cell>3</cell>
<cell>4</cell>
</row>
至于问题的第二部分,问题是为这么大的文档构建完整的DOM是非常昂贵的。因此,您需要研究事件驱动解析(SAX,请参阅https://en.wikipedia.org/wiki/Simple_API_for_XML),但我对此没有任何个人经验。
相关文章:
- 通过从节点父级获取所有子级对节点进行排序(获取子级数组)
- 选择<李>使用普通JavaScript的子节点,而不是孙节点
- JavaScript选择器:查找包含具有特定属性的子体的节点
- js循环遍历单击的元素子节点
- 如何将数据添加到json的子节点
- 删除HTML节点而不删除其子节点
- 如何在javascript DOM api中获取具有给定条件的子节点
- 仅使用某些子节点访问xml中父节点的子节点
- 如何将节点添加到子对象
- 节点.js子进程中的运行函数
- 检测单击子节点并发送槽事件处理程序
- 从 d3.js 中的树中选择节点的子节点
- 访问所选剑道树视图节点的子节点
- 为什么正文标记后的脚本标记在子节点中计数
- 难以获取使用属性选择的节点的子节点
- xml解析-用javaScript解析子子xml节点
- 是否有可能监视或以某种方式检测子dom节点何时追加到父节点
- 当某些节点被选中/取消选中时,自动检查/取消选中extjs树中的所有子树节点
- 正在调用子iframe节点中的Javascript函数
- 将缓冲区传递到子进程节点.js