2

我希望有人能指出我正确的方向。我正在编写一个 PHP 应用程序,它基本上会提取大约 10-15 个 xml 提要,每个提要大约有 30 个节点,格式不同,然后将它们聚集到各种类别中。到目前为止,我能够编写一段 php 来通过 XSLT 将每个提要转换/映射为标准化格式(xml 元素在所有输出字段中都是标准化的)。我可以做一个简单的包含并将它们全部包含以输出单个提要,问题是提要现在大约有 400-500 个节点,每个节点有 17 个元素,并且需要永远加载。这就是我卡住的地方,我尝试了 XMLReader/XMLWriter 命令,但在 XML Writer 上出现错误。我正在使用下面的代码

$xml1 = new XMLReader();
$xml1->open('convert1.php');

$xml2 = new XMLReader();
$xml2->open('convert2.php');
    $name = 'xmlroot';

    $write = new XMLWriter();
    $write->startElement($name);

这是我得到的错误:

Warning: XMLWriter::startElement() [xmlwriter.startelement]: Invalid or unitialized XMLWriter object in C:\wamp\www\mergetest\merge1.php on line 22

我的 XML 结构如下:

<xmlroot>
<xmlnode>
<xmlelement></xmlelement>
</xmlnode>
</xmlroot>

转换 PHP 代码:

    <?php

$xml = new DOMDocument();
$xml->load('xmlfeed');

$xsl = new DOMDocument;
$xsl->load('xsl.xsl');

$proc = new XSLTProcessor();
$proc->importStyleSheet($xsl);

echo $proc->transformToXML($xml);

我还是 PHP 新手,所以如果有菜鸟错误或者我没有包含某些内容,请不要发火,哈哈,我只是想学习,任何和所有的帮助都将不胜感激。我尝试查看 PHP 参考/教程,但似乎没有帮助。

4

1 回答 1

1

您需要因此更改您的代码

$write = new XMLWriter();
$write->openMemory();
$write->startElement($name);
...more code...
print $write->outputMemory();

http://www.php.net/manual/en/function.xmlwriter-write-element.php#87535

于 2012-05-21T15:30:16.780 回答