[英]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.