【发布时间】:2011-12-22 13:11:42
【问题描述】:
我有一个关于 DOMDocument 的使用和创建 XML 的问题。
我有一个 PHP 程序
- 在 XML 文件中加载
- 处理XML的每个节点(行);将其发送到另一个进程,然后该进程返回一个 XML 元素
- 我得到了节点的字符串表示,这样我就可以创建(附加)到一个新的、生成的 XML 树以返回给客户端
我遇到的问题是,在我尝试将最终文档返回给客户端之前,XML 看起来很好。我正在使用 saveXML() 并且生成的文件包含 < > 等。当我尝试保存到文件 [save()] 时,我也得到了这些结果。已经在 PHP 板中搜索了几个小时。
这是我的代码:
<?php
header('Content-type: text/xml');
// **** Load XML ****
$xml = simplexml_load_file('Test1.xml');
// Instantiate class; work with single instance
$myAddress = new myAddressClass;
$domDoc = new DOMDocument('1.0', 'UTF-8');
$domDoc->formatOutput = true;
$rootElt = $domDoc->createElement('root');
$rootNode = $domDoc->appendChild($rootElt);
//Go through each row of XML and process each address
foreach($xml->Row as $row)
{
//fire off function against instance
// returns SimpleXMLElement
$resultXMLNode = $myAddress->buildRequest() ;
// need XML representation of node
$subNode = $addressXML->asXML();
// strip out extraneous XML def
$cleanSubNode = str_replace('<?xml version="1.0"?>', '', $subNode);
// create new node
$subElt = $domDoc->createElement('MyResponse', $cleanSubNode );
//append subElmt node
$rootNode->appendChild($subElt);
}
// need full XML doc properly formatted/valid
$domDoc->saveXML();
?>
顺便说一句,我将 XML 返回给客户端,以便我可以通过 jQuery 生成 HTML。
任何帮助将不胜感激。
另外,如果有人能提供一种可能更有效的方法,那就太好了:)
谢谢。
罗伯
【问题讨论】:
-
决定要在 PHP 中处理 XML 的库。您同时使用 SimpleXML 和 PHPDOM,我认为它们不能很好地协同工作。
-
你指的是我最初的 simplexml_load_file() 吗?如果是这样,不确定这会影响我的最终输出,因为那只是一个驱动程序文件。感谢您的评论。
-
我更改了行 $subNode = $addressXML->asXML();使用具有相同结果的 saveXML() :(
标签: php xml domdocument