【问题标题】:how to process an XML NODE in PHP如何在 PHP 中处理 XML 节点
【发布时间】:2011-03-27 18:27:14
【问题描述】:

这里是简单的代码。我只想知道如何处理$reader->expand();返回的节点

<?php
$reader = new XMLReader();
if (!$reader->open("data.xml"))
{
    die("Failed to open 'data.xml'");
}
while($reader->read())
{
    $node = $reader->expand();
    // just want to know how to process this node now?
}
$reader->close();
?>

【问题讨论】:

  • “过程”是什么意思?该方法仅返回一个 DOM 节点,因此只需调用其方法或以其他方式操作对象即可。
  • 我想读取这个节点中的值,我的意思是如果我的 xml 文件是 article 1 article 2现在我认为节点包含所有这些信息.. 对吗?那么如何获取这些信息呢?
  • php.net/dom通读 DOM 的文档和示例

标签: php xml xml-parsing xmlnode


【解决方案1】:
<?php
$xml = <<<XML
<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<parent xmlns:dc="myNS"> 
<dc:child> <dc:a>A</dc:a> <dc:b>B</dc:b> </dc:child> 
<dc:child> <dc:a>c</dc:a> <dc:b>d</dc:b> </dc:child> 
<dc:child> <dc:a>e</dc:a> <dc:b>f</dc:b> </dc:child> 
<dc:child> <dc:a>g</dc:a> <dc:b>h</dc:b> </dc:child> 
</parent> 
XML;

$reader = new XMLReader();
$reader->xml($xml);
while($reader->read()) {
    switch($reader->nodeType) {
        case constant('XMLREADER::ELEMENT'):
            if ($reader->name == 'dc:child') {
                //insert into db
                var_dump($reader->readInnerXml());
            }
            break;
    }
}

$reader->close();

输出:

string(63) " <dc:a xmlns:dc="myNS">A</dc:a> <dc:b xmlns:dc="myNS">B</dc:b> "
string(63) " <dc:a xmlns:dc="myNS">c</dc:a> <dc:b xmlns:dc="myNS">d</dc:b> "
string(63) " <dc:a xmlns:dc="myNS">e</dc:a> <dc:b xmlns:dc="myNS">f</dc:b> "
string(63) " <dc:a xmlns:dc="myNS">g</dc:a> <dc:b xmlns:dc="myNS">h</dc:b> "

【讨论】:

  • 实际上我需要使用 XMLReader 作为文件大小,如果非常大,以 GB 为单位
  • 你太好了,让我检查一下,但最后一件事,请帮助我使用 DOM 执行此操作。这是代码的链接,代码中只需要一行。亲爱的,我很感激,因为我卡在这很长一段时间了。/stackoverflow.com/questions/5448542/…
  • 实际上我想将这些数据放入数据库中,这将很容易在您的代码中使用 DOM 因为这些数据的操作方式我不知道如何将其分别放入数据库中的每个条目.
  • 如果此解决方案回答了您的原始问题,请将其标记为已回答,如果您遇到此问题范围之外的其他问题,请打开一个新问题。
  • 这是个问题,亲爱的......这是简单的代码。我只想知道如何处理 $reader->expand() 返回的节点; $node = $reader->expand(); // 只想知道现在如何处理这个节点?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-15
  • 1970-01-01
  • 2020-05-19
  • 1970-01-01
  • 2021-12-02
  • 1970-01-01
  • 2015-07-21
相关资源
最近更新 更多