DomXMLとPHPの属性値によるノードの取得

後でコンテンツと属性を編集する特定のノードを選択しようとしていますが、 notice ノードを選択できません(下記のPHPコードを参照)。

XMLドキュメント

<?xml version="1.0" encoding="UTF-8"?>

    <!--
    
        Content of the notice.
    
    -->
    
        One amazing notice.
    


$ id の値は "0001"です(文字列)。

PHP

$document = new DOMDocument;
$document = dom_import_simplexml($this->xml);

$notices= $document->getElementsByTagName('notice');
#var_dump($notices);

foreach($notices as $element)
{
    if($element->getAttribute('id') == $id)
    {
        $notice = $element;
        var_dump($notice); //Returns absolutely nothing (I guess the if returns false).
    }
}

$notice->removeAttribute("endDate");
$notice->setAttribute("endDate",$endDate);

Everytime I fall into the if statement, my $notice returns no value.
I tried with xpath query ( //notice[@id="{$id}"]) without any success.

To clarify, my problem would be $element->getAttribute('id') does not seem to work.


私も SimpleXML で試しました:

PHP

$document = new DOMDocument;
$document = simplexml_import_dom($this->xml);

$notice = "";

foreach($document->notices->children() as $element)
{
    $attributes = $element->attributes();
    if($attributes['id'] == $id)
    {
        $notice= $element;
        var_dump($notice);
    }
}
$avis->removeAttribute("endDate");
$avis->setAttribute("endDate",$endDate);

SimpleXMLは私に次のメッセージを送ります:ノードはもう存在しません

foreach($document->notices->children() as $element)

0
nl ru de
XML文書が正しくロードされていることを確認しましたか?これが答えかどうかは分かりませんが、ファイルを DOMDocument :: load()でロードしようとしていて、その新しいインスタンスを作成する必要はありません DOMDocument
追加された 著者 MahanGM,

1 答え

私はついにそれを得た。

PHP

$document = simplexml_import_dom($this->xml);
$notice = "";

$xpathResults = $document->xpath('//notice');


foreach($xpathResults as $element)
{
    $elementID = $element->id[0];
    $domXML = dom_import_simplexml($element);

    if((string) $noticeID == $id)
    {
        $notice = $domXML;

    }
}
0
追加された
あなたはxpathでそれを直接行うことができます。 $ id に何か違うものが含まれていたり、xpath式がボークされていた可能性があります。変数を使用すると、動作しない場合はvar_dumpして何が起こっているのかを見ることができます: eval.in/6307
追加された 著者 hakre,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com