2012-02-13 14 views
1

PHPでXMLを編集しようとしています。現在のようなものを見XML:PHPアクセスXMLノード要素

<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"> 
    <channel> 
    <title>Main Title</title> 
    <link>http://exmaple.com</link> 
    <description> blahblahblah </description> 
    <language>en</language> 
    <item> 
     <title>Tite1</title> 
     <link>http://www.example.com (THIS IS WHAT I WANT)</link> 
     <description>blah blah blah</description> 
    </item> 
    . 
    . 
    . 
</channel> 
</rss> 

は、私は第二レベルのリンクにアクセスしようとしましたが、私のコードは、最初のリンクノードの値を変更します。コードは次のとおりです。

 $xml->load('http://www.google.com/doodles/doodles.xml'); 
    $element = $xml->getElementsByTagName('channel')->item(0); 
    $secondlvl = $element->getElementsByTagName('item')->item(0); 
    $2ndlevellinknode = $element->getElementsByTagName('link')->item(0); 
    $2ndlevellinknode->nodeValue = $newvalue; 

ご意見はありますか?また、このようなforループでこのコード行を使用することも可能です。

for ($i = 0; $i <= 20; $i++) { 
    $element = $xml->getElementsByTagName('channel')->item(0); 
    $secondlvl = $element->getElementsByTagName('item')->item(0); 
    $2ndlevellinknode = $element->getElementsByTagName('link')->item($i); 
    $2ndlevellinknode->nodeValue = $newvalue; 
} 
+2

私は個人的には[PHPのSimpleXML](http://php.net/manual/en/book.simplexml.php)を使用する方がはるかに簡単です。 –

+0

はい。 SimpleXmlを使用してください。 – busypeoples

+0

$ Secondlevellinknode = $ secondlvl-> getElementsByTagName( 'link') - > item(0); //ない$ element-> getElementsByTagName( 'link') - > item(0); – Fivell

答えて

2

これはあなたに考えを与えるはずです。

$f = simplexml_load_file('test.xml'); 
print $f->channel->title . "\n"; 
print $f->channel->link . "\n"; 
print $f->channel->description . "\n"; 
foreach($f->channel->item as $item) { 
    print $item->title . "\n"; 
} 
+0

ありがとう! – Nick

関連する問題