0

フォームから受け取ったデータを、すでに存在するXMLファイルに追加しようとしています。ファイルにデータを追加するためにPHPでDOMDocumentを使用しています...

データの追加にはある程度成功していますが、間違った要素に追加されています。

これで、ルート要素となる特定の名前の要素が1つだけ存在することがわかりました。また、他のデータを含む名前の要素が1つだけになることも知っています。

これらの要素にはIDがないので、getElementsByTagNameDOMDocumentを使用してPHPで読みたいと思います。

したがって、ファイル全体にその名前の要素が1つしかないことがわかっている場合は、次のようなことを実行できますか?

$element = $dom->getElementByTagName('ElementName'); $element[0];

つまり、配列の最初の要素のみを選択できますか?そして、私はそれをどのようにすべきですか?上記のコードは機能しないためです。

4

2 に答える 2

3

TagNameは、htmlまたはxmlタグの名前を指します。1つしかない場合は、次のようなことができるはずです。

$element = $dom->getElementByTagName('ElementName')->item(0);

ただし、実際に探していることはxpathで実行できるようです。

$xpath = new DOMXPath($dom);
$elements = $xpath->query("//*[@name='ElementName']");

foreach ($elements as $node)
{
    $element[] = $node;
}

これで、$element[0]が探している要素になります。

于 2011-12-17T14:59:04.747 に答える
2

からの戻り値getElementsByTagName()DOMNodeListオブジェクトであり、配列ではありません。リスト内の個々のアイテムへのアクセスは、item()メソッドを介して行われます。

$element = $dom->getElementByTagName('ElementName')->item(0);

見る:

于 2011-12-17T15:03:23.733 に答える