将 xml DOMDocument 转换为字符串

Posted

技术标签:

【中文标题】将 xml DOMDocument 转换为字符串【英文标题】:converting xml DOMDocument to string 【发布时间】:2012-10-10 21:39:01 【问题描述】:

您好,我正在将 ajax 用于显示可用课程的网站,我在阅读 xml(其中包含课程详细信息)时遇到问题,与我的输入(inout 课程名称)相比,如果等于我正在显示文本(课程描述)。 现在我正在跟踪它以获得正确的课程名称(在 xml 文件中),但是在将其与输入课程名称进行比较时,它根本没有比较所以。在某一时刻,我加载了 xml 文件并回显它:

$doc->load('data/ICT.xml'); 
echo"$doc";

它给了我一个错误

可捕获的致命错误:第 23 行的 /home/students/....../www/htdocs/client/unit_details.php 中的 DOMDocument 类的对象无法转换为字符串

所以我从中了解到的是应该将 xml dom 对象转换为字符串,以便我可以获得所需的数据并使用它,是真的吗?如果可以的话,有人可以告诉我该怎么做(比如任何功能等),提前谢谢:-)

【问题讨论】:

DOMDocument 实现了 DOM API - 通过getElementById(), getElementsByClassName() 等访问节点,并使用saveXML() 写出一个字符串。 【参考方案1】:

DOMDocument 对象不能用作字符串。

以下是将DOMDocument 对象显示为 XML 字符串的方法:

echo $doc->saveXML();

【讨论】:

【参考方案2】:

DOMDocument 有一个方法Savehtml(),它旨在满足您的需求。

您可以通过以下方式显示整个文档:

$doc->saveHTML();

或者只是某个节点:

$doc->saveHTML( $bodyNode);

DOMDocument 还提供了一些如何增强 XML 打印方式的选项,例如:

preserveWhiteSpaces formatOutput encoding ...

【讨论】:

【参考方案3】:

你可以使用类型转换

$doc->load('data/ICT.xml'); 
$doc2=(string)$doc;
echo $doc2;

或者你可以使用PHP函数

strval();

此函数返回传递给它的参数的字符串值。

【讨论】:

您最好在回答之前阅读该问题:“可捕获的致命错误:无法将 DOMDocument 类的对象转换为 /home/students/....../www 中的字符串/htdocs/client/unit_details.php 第 23 行"【参考方案4】:

试试这个:

$xml = $doc->saveXML($doc->documentElement);

【讨论】:

以上是关于将 xml DOMDocument 转换为字符串的主要内容,如果未能解决你的问题,请参考以下文章

防止 DOMDocument::loadHTML() 转换实体

使用 DOMDocument->saveHTML() 将实际 Unicode 字符自动转换为数值

将字符串从一种编码转换为另一种编码

如何在java中将String转换为DOM Document对象?

警告:DOMDocument::loadXML():需要开始标记,在实体中找不到“<”

DOMDocument-防止空标记//检索没有xml声明的节点