php simpleXML addChild包含现有的文本节点


php simpleXML addChild containing existing text node

我想取一个现有元素并在其中放置一个子元素。但是我想让已经存在的元素的内容也放到新元素中。

所以我有<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()方法也添加了新的内容,这不是我真正想要的。我想让它代替文本内容

我想这应该行得通:

  1. Content保存为新变量:$link = (string) $indivfolnum;
  2. 清除<span>元素:$indivfolnum[0] = "";
  3. 然后添加新的子节点。

代码示例:

$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>