php simpleXML addChild, содержащий существующий текстовый узел - PullRequest
0 голосов
/ 21 сентября 2011

Я хочу взять существующий элемент и поместить в него дочерний элемент.Но я хочу, чтобы содержимое ранее существовавшего элемента также входило в новый элемент.

Итак, у меня есть <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 Ответ

2 голосов
/ 21 сентября 2011

Я думаю, что это должно работать:

  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>

...