2011-07-15 13 views
0

私はこの議論がすでにカバーされていることを知っています。ここではすべての提案を試みましたが、PHPからxmlファイルを簡単に読み込むことはできません。私は単にidでタグの内容を読み取ろうとしています。PHPで単純なxmlを更新

のtest.xml

<?xml version="1.0" encoding="UTF-8"?> 
<queries> 
    <sql id="one">here is the first one</sql> 
    <sql id="two">here is the second one</sql> 
</queries> 

そして、私は単にこれを読んしようとしている:ここではXMLです

<?php 
$dom = new DOMDocument; 
$dom->validateOnParse = TRUE; 
$dom->loadXML('test.xml'); 
$node = $dom->getElementById('one'); 
echo $node->nodeValue; 
?> 

の世界で、私はこの仕事を得ることができないのはなぜ?申し訳ありませんnewbの質問が、私はブランドの新しいPHPです。

答えて

0

ID属性をDOMElement::setIDAttributeに設定するか、属性にタイプID(この例では含まれていません)を定義するDTDを使用する必要があります。

決勝コード:

<?php 
$dom = new DOMDocument; 
$dom->validateOnParse = TRUE; 
$dom->loadXML('test.xml'); 
$dom->setIdAttribute("id",true); 
$node = $dom->getElementById('one'); 
echo $node->nodeValue; 
?> 
+0

ありがとうございますが、私はこのサーバーで500のサーバーエラーが発生しました。私はZendサーバーを使用しています。たぶん私はいくつかの設定が間違っている。私は周りを見回します。 – Adam

0

getElementById()それはJavaScriptで行うようにPHPで同じように動作しないとdocumentationを説明します。コードでIDを設定する手間を掛けたくない場合は、「IDで検索」するもう1つの方法はXPathを使用しています:

<?php 
$dom = new DOMDocument; 
$dom->validateOnParse = TRUE; 
$dom->loadXML('test.xml'); 

$dxp = new DOMXPath($dom); 
$result = $dxp->query('//sql[@id = "one"]'); 
$node = $result->item(0); 
echo $node->nodeValue; 
?> 
関連する問題