[英]How to alter DOM with xmldom by XPath in node.js?
我正在尝试更改node.js中的DOM结构。 我可以加载XML字符串,并使用xmldom( https://github.com/jindw/xmldom )中的本机方法对其进行更改,但是当我加载XPath( https://github.com/goto100/xpath )并尝试通过该选择器更改DOM,它不起作用。
还有另一种方法可以做到这一点吗? 要求是:
以下示例代码显示了我今天的工作方式,也许我只是想念一些基本的知识?
var xpath = require('xpath'),
dom = require('xmldom').DOMParser;
var xml = '<!DOCTYPE html><html><head><title>blah</title></head><body id="test">blubb</body></html>';
var doc = new dom().parseFromString(xml);
var bodyByXpath = xpath.select('//*[@id = "test"]', doc);
var bodyById = doc.getElementById('test');
var h1 = doc.createElement('h1').appendChild(doc.createTextNode('title'));
// Works fine :)
bodyById.appendChild(h1);
// Does not work :(
bodyByXpath.appendChild(h1);
console.log(doc.toString());
bodyByXpath不是单个节点。 要select
的第四个参数(如果为true)将告诉它仅返回第一个节点;否则为false。 否则,它是一个列表。
作为aredridel状态,默认情况下,当选择节点时, .select()
将返回一个数组。 因此,您需要从该阵列中获取节点。
如果只想选择一个节点,也可以使用.select1()
:
var bodyByXpath = xpath.select1('//*[@id = "test"]', doc);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.