首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >simplexml_load_string() != simplexml_import_dom()?

simplexml_load_string() != simplexml_import_dom()?
EN

Stack Overflow用户
提问于 2011-06-29 15:38:18
回答 3查看 921关注 0票数 1

如果我使用DOMDocument::loadHTMLFile()加载一个超文本标记语言页面,然后将它传递给simplexml_import_dom(),那么一切都很好。但是,如果我使用$dom->saveHTML()DOMDocument获取字符串表示,那么使用simplexml_load_string(),我将什么都得不到。实际上,如果我使用一个非常简单的页面,它可以工作,但一旦有更复杂的东西,它就会失败,在PHP日志文件中没有任何错误。

有人能说明这一点吗?

这是不是与HTML不是可解析的XML有关?

在使用内容之前,我试图从格式化的超文本标记语言文本中去掉CR和换行符,因为它们与内容无关,而是被插入到SimpleXMLElement对象中,这是相当繁琐的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-29 15:42:16

Is it something to do with HTML not being parsable XML?

是!超文本标记语言是一种不太严格的语法,因此simplexml_load_string不能单独使用它。这是因为simplexml很简单,而HTML很复杂。另一方面,DOMDocument被设计为能够读取错综复杂的超文本标记语言结构,这意味着既然它能够理解超文本标记语言,而simplexml能够理解它,那么您就可以弥合这一众所周知的鸿沟。

代码语言:javascript
复制
<!-- Valid HTML but not valid XML -->
<ul>
    <li>foo
    <li>bar
</ul>
票数 2
EN

Stack Overflow用户

发布于 2011-06-29 15:43:05

HTML可能是有效的XML,也可能不是。当你使用loadHTMLFile时,它不一定是格式良好的xml,因为DOM是一个超文本标记语言,所以规则是不同的,但是当你向SimpleXML传递一个字符串时,它确实必须是格式良好的。

票数 0
EN

Stack Overflow用户

发布于 2011-06-29 16:24:41

如果我理解您的问题是正确的,并且您只是希望在输出中不使用空格,那么就不需要在这里使用simplexml

使用:DOMDocument::preservewhitespace,如:

代码语言:javascript
复制
$dom->preserveWhiteSpace = false;

saveHTML和你准备好之前。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6517239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档