将 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对象?