我想设置xpath()找到的某个节点的文本
<?php
$args = new SimpleXmlElement(
<<<XML
<a>
<b>
<c>text</c>
<c>stuff</c>
</b>
<d>
<c>code</c>
</d>
</a>
XML
);
// I want to set text of some node found by xpath
// Let's take (//c) for example
// convoluted and I can't be sure I'm setting right node
$firstC = reset($args->xpath("//c[1]/parent::*"));
$firstC->c[0] = "test 1";
// like here: Found node is not actually third in its parent.
$firstC = reset($args->xpath("(//c)[3]/parent::*"));
$firstC->c[2] = "test 2";
// following won't work for obvious reasons,
// some setText() method would be perfect but I can't find nothing similar,
$firstC = reset($args->xpath("//c[1]"));
$firstC = "test";
// maybe there's some hack for it?
$firstC = reset($args->xpath("//c[1]"));
$firstC->{"."} = "test"; // nope, just adds child named .
$firstC->{""} = "test"; // still not right, 'Cannot write or create unnamed element'
$firstC["."] = "test"; // still no luck, adds attribute named .
$firstC[""] = "test"; // still no luck, 'Cannot write or create unnamed attribute'
$firstC->addChild('','test'); // grr, 'SimpleXMLElement::addChild(): Element name is required'
$firstC->addChild('.','test'); // just adds another child with name .
echo $args->asXML();
// it outputs:
//
// PHP Warning: main(): Cannot add element c number 2 when only 1 such elements exist
// PHP Warning: main(): Cannot write or create unnamed element
// PHP Warning: main(): Cannot write or create unnamed attribute
// PHP Warning: SimpleXMLElement::addChild(): Element name is required
// <?xml version="1.0"? >
// <a>
// <b>
// <c .="test">test 1<.>test</.><.>test</.></c>
// <c>stuff</c>
// </b>
// <d>
// <c>code</c>
// <c>test 2</c></d>
// </a>
您可以使用 SimpleXMLElement自引用 :
$firstC->{0} = "Victory!!"; // hackity, hack, hack!
// -or-
$firstC[0] = "Victory!!";
看完后发现
var_dump((array) reset($xml->xpath("(//c)[3]")))
问题内容: 想象一下,我有以下类似的东西修改 如何在不影响任何子元素的情况下从DOM中仅删除(仅文本)“第一”,“第二”和“第三”。 问题答案: 如果要删除所有子文本节点,则可以使用,然后将匹配集减少为仅文本节点: 注意 :这将保留子元素上所有现有的事件处理程序,使用答案不会做(因为从DOM中删除了这些元素并重新添加了这些元素)。 注2 :一些链接的问题中的答案显示的代码与我的答案中的代码相似,但
问题 你需要修改一个HTML文档中的文本内容 方法 可以使用Element的设置方法:: Element div = doc.select("div").first(); // <div></div> div.text("five > four"); // <div>five > four</div> div.prepend("First "); div.append(" Last"); /
我是一个自动化测试的新手,现在我正在使用selenium C#。我有一个问题,我想从一个元素中获取文本,但是代码: 和我的声明 driver.findElement(by.xpath(“//*[@id='contact list']/div[1]/div/div[1]/div/div/div/div/div/div[2]”)).text; 获取: 有人有办法吗?非常感谢!此处为HTML:
问题内容: 的HTML 码 问题答案: 我已经看到这个问题在过去大约一年左右的时间里弹出了几次,我想尝试编写此函数…所以就到这里了。它接受父元素,并删除每个子元素的textContent,直到剩下的是textNode为止。我已经在您的HTML上对其进行了测试,并且可以正常工作。 你叫它
问题内容: 的HTML 码 问题答案: 我已经看到这个问题在过去大约一年左右的时间里弹出了几次,我想尝试编写此函数…所以就到这里了。它接受父元素,并删除每个子元素的textContent,直到剩下的是textNode为止。我已经在您的HTML上对其进行了测试,并且可以正常工作。 你叫它