【问题标题】:PHP access XML node elementPHP访问XML节点元素
【发布时间】:2012-02-13 20:59:44
【问题描述】:

我正在尝试使用 PHP 编辑一些 XML。目前的 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;
}

【问题讨论】:

  • 我个人觉得PHP's SimpleXML 更容易使用。
  • $2ndlevellinknode = $secondlvl->getElementsByTagName('link')->item(0); // 不是 $element->getElementsByTagName('link')->item(0);
  • 有人可以举一个使用 SimpleXML 的例子吗?
  • 我可以用 DomDocument 做点什么。你想把它换成什么?
  • 我试图替换二级链接节点。

标签: php xml xml-parsing


【解决方案1】:

这应该会给你一个想法。

$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";
}

【讨论】:

    猜你喜欢
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多