我想取一个现有元素并在其中放置一个子元素。但是我想让已经存在的元素的内容也放到新元素中。
所以我有<span class="folnum">Content</span>
,我想以<span class="folnum"><a href="link">content</a></span>
结束,我希望我可以用php的simpleXML解析器做到这一点。
这是我到目前为止得到的:
$folnum = $xmldoc->xpath("//span[@class='folnum']");
foreach ($folnum as $indivfolnum)
{
$child = $indivfolnum->addChild("a", "wholemsImage");
$child->addAttribute("href", (string) $indivfolnum);
}
我得到的是<span class="folnum">Content<a href="link">wholemsImage</a></span>
。
显然,addChild()
方法也添加了新的内容,这不是我真正想要的。我想让它代替文本内容
我想这应该行得通:
- 将
Content
保存为新变量:$link = (string) $indivfolnum;
- 清除
<span>
元素:$indivfolnum[0] = "";
- 然后添加新的子节点。
代码示例:
$folnum = $xmldoc->xpath("//span[@class='folnum']");
foreach ($folnum as $indivfolnum)
{
$link = (string) $indivfolnum;
$indivfolnum[0] = "";
$child = $indivfolnum->addChild("a", "wholemsImage");
$child->addAttribute("href", $link);
}
生成你想要的输出:
<span class="folnum"><a href="Content">wholemsImage</a></span>