JavaScript生成器,满足XPath

2020-08-25 01:48:12

如果文本整齐地隔离在HTML元素内,就很容易做到:

但这里有一个难题:如何更改HTML元素中没有整齐隔离的文本?

我们可以的!。进入:XPath,这是一种用于查询XML文档的功能非常强大的语言。它可以在Web浏览器中使用,呃,具有描述性名称的方法Document.Evaluate。

让XPath=";//text()[CONTAINS(.,';Hello';)]";;//查找包含';Hello';let context=document.body;//在Body元素中查找的Body元素let NAMESPACE_RESOVER=NULL;//一些排序的XML巫毒让RESULT_TYPE=XPathResult。ORDERED_NODE_SNAPSHOT_TYPE;//一定要确保使用这个let Results=document。EVALUATE(XPath,CONTEXT,NULL,RESULT_TYPE);FOR(设i=0;i<;Results.snapshotLength;i++){let node=Results。SnapshotItem(I);node.textContent=node.textContent。替换(";Hello";,";Greetings";);}。

是的,你真的需要把这些都写下来。RESULT_TYPE参数在技术上是可选的,但省略它将自负风险:如果没有它,您必须改为通过iterateNext流式传输结果,如果您敢修改查询的元素,这将崩溃并引发异常!

是的,有发电机!我们可以利用生成器的隐式迭代性来更新这个笨重的API:

文档。Prototype.xpath=元素。原型。Xpath=function*xpath(Xpath){让context=this instanceof document?DocumentElement:this;让NAMESPACE_RESOVER=NULL;让RESULT_TYPE=XPathResult.ORDERED_NODE_SNAPSHOT_TYPE;让RESULTS=DOCUMENT。EVALUATE(XPath,CONTEXT,NULL,RESULT_TYPE);for(设i=0;i<;Results.snapshotLength;i++)产生结果。SnapshotItem(I);};

由于此函数的结果是可迭代的,因此我们可以将其与扩展语法一起使用: