PHP XML DOMDocument Удалить дочерний элемент по значению атрибута? - PullRequest
0 голосов
/ 23 октября 2011

Я генерирую XML-файл на лету и хочу удалить некоторых потомков по имени их атрибута.

Например: Data.xml

<root>
<item name="item-1">
  <sub1>some text</sub1>
  <sub2>etc.</sub2>
</item>
<item name="item-2">
  <sub1>some different text</sub1>
  <sub2>etc.</sub2>
</item>
</root>

Сейчас я пытаюсь удалить элемент по имени атрибута. (т.е. "элемент-1")

Вот так настроены мой XML Doc и мои элементы:

$doc = new DOMDocument('1.0', 'utf-8');
$root = $doc->createElement("root");
$doc->appendChild($root);

// Foreach... {

$item = $doc->createElement("item");
$item->setAttributeNode(new DOMAttr('name', 'item-'.$i));
$root->appendChild($item);

}

$doc->save("Data.xml")

Я бы хотел иметь что-то вроде: $ doc-> removeElementByAttributeValue ("item-1"), но я не могу найти хитрость: - (

1 Ответ

1 голос
/ 24 октября 2011

Используйте xpath, чтобы найти узел:

//item[@name='item-1']

, который вернет точно совпадающий узел, который затем вы можете передать в вызов removeChild

...