- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
每个人都知道我们应该始终使用 DOM 技术而不是正则表达式来从 HTML 中提取内容,但我觉得我永远不能相信 SimpleXML 扩展或类似的扩展。
我现在正在编写一个 OpenID 实现,我尝试使用 SimpleXML 进行 HTML 发现 - 但我的第一个测试(使用 alixaxel.myopenid.com)产生了很多错误:
Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 27: parser error : Opening and ending tag mismatch: link line 11 and head in E:\xampplite\htdocs\index.php on line 6
Warning: simplexml_load_string() [function.simplexml-load-string]: </head> in E:\xampplite\htdocs\index.php on line 6
Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in E:\xampplite\htdocs\index.php on line 6
Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 64: parser error : Entity 'copy' not defined in E:\xampplite\htdocs\index.php on line 6
Warning: simplexml_load_string() [function.simplexml-load-string]: © 2008 <a href="http://janrain.com/">JanRain, Inc.</a> in E:\xampplite\htdocs\index.php on line 6
Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in E:\xampplite\htdocs\index.php on line 6
Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 66: parser error : Entity 'trade' not defined in E:\xampplite\htdocs\index.php on line 6
Warning: simplexml_load_string() [function.simplexml-load-string]: myOpenID™ and the myOpenID™ website are in E:\xampplite\htdocs\index.php on line 6
Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in E:\xampplite\htdocs\index.php on line 6
Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 66: parser error : Entity 'trade' not defined in E:\xampplite\htdocs\index.php on line 6
Warning: simplexml_load_string() [function.simplexml-load-string]: myOpenID™ and the myOpenID™ website are in E:\xampplite\htdocs\index.php on line 6
Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in E:\xampplite\htdocs\index.php on line 6
Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 77: parser error : Opening and ending tag mismatch: link line 8 and html in E:\xampplite\htdocs\index.php on line 6
Warning: simplexml_load_string() [function.simplexml-load-string]: </html> in E:\xampplite\htdocs\index.php on line 6
Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in E:\xampplite\htdocs\index.php on line 6
Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 78: parser error : Premature end of data in tag head line 3 in E:\xampplite\htdocs\index.php on line 6
Warning: simplexml_load_string() [function.simplexml-load-string]: in E:\xampplite\htdocs\index.php on line 6
Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in E:\xampplite\htdocs\index.php on line 6
Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 78: parser error : Premature end of data in tag html line 2 in E:\xampplite\htdocs\index.php on line 6
Warning: simplexml_load_string() [function.simplexml-load-string]: in E:\xampplite\htdocs\index.php on line 6
Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in E:\xampplite\htdocs\index.php on line 6
我记得有一种方法可以使 SimpleXML 始终独立地解析文件,无论文档是否包含错误 - 虽然我不记得具体的实现,但我认为它涉及使用 DOMDocument。确保 SimpleXML 始终解析任何给定文档的最佳方法是什么?
并且请不要建议使用 Tidy,我认为该扩展很慢并且在许多系统上不可用。
最佳答案
您可以使用 DOM's loadHTML 加载 HTML然后将结果导入 SimpleXML。
IIRC,它仍然会在 一些 东西上窒息,但它会接受现实世界中损坏网站中几乎所有存在的东西。
$html = '<html><head><body><div>stuff & stuff</body></html>';
// disable PHP errors
$old = libxml_use_internal_errors(true);
$dom = new DOMDocument;
$dom->loadHTML($html);
// restore the old behaviour
libxml_use_internal_errors($old);
$sxe = simplexml_import_dom($dom);
die($sxe->asXML());
关于php - 防弹 SimpleXMLElement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3312319/
SimpleXMLElement 的“addChild”方法似乎应该是正确的选择,但它显然只接受表示新 child 的标记名的字符串。 有用于引用树节点并设置它们的对象式表示法,例如$simpleXM
我有以下 XML: 0 200230455 Promotion 10001599 KFL-20% off N
我正在编写一个 PHP 脚本来生成一些 xml 文档,但我在使用 SimpleXML 和引号时遇到了一些问题。 如果我有这样的代码: $xml = new SimpleXMLElement('');
我有以下 XML: 0 200230455 Promotion 10001599 KFL-20% off N
我正在编写一个 PHP 脚本来生成一些 xml 文档,但我在使用 SimpleXML 和引号时遇到了一些问题。 如果我有这样的代码: $xml = new SimpleXMLElement('');
我做了一个这样的函数: function getFeed($feed_url) { $content = file_get_contents($feed_url); $x = new
每个人都知道我们应该始终使用 DOM 技术而不是正则表达式来从 HTML 中提取内容,但我觉得我永远不能相信 SimpleXML 扩展或类似的扩展。 我现在正在编写一个 OpenID 实现,我尝试使用
我正在尝试在我的 php7 laravel 项目中使用 digital ocean 空间。代码非常简单,只需加载一个文件并将其复制到目录即可。一切都在我的本地机器上工作,但在我的 digital oc
我到处搜索这个,我遇到了很多问题,但我不认为这是实际代码的问题。基本上这段代码在两个单独的线程中启动套接字服务器(登录和游戏),我基本上是从非线程版本转换这段代码,但我一直无法让它为线程工作。 inc
我找到了 ( here) 一个关于删除 SimpleXMLElement 对象节点的方法的答案。 问题是我无法真正理解这是怎么发生的。 我的意思是,$image var 是一个 ref,对吧?那么,$
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 9
我正在尝试在 Wordpress 中创建一个 Widget,但在创建 SimpleXMLElement 对象时遇到了问题。 代码如下: namespace GenieKnows_Search; cl
我正在尝试访问以下元素中的数字,但无法从中获取值。 echo $object->0; //returns Parse error: syntax error, unexpected T_LNUMBER
我在加载外部 XML 文件时遇到问题。 当我在浏览器中打开它时,一切看起来都很好。我尝试下载 XML 文件并将其上传到我自己的服务器上。当我尝试从我的服务器加载 XML 文件时,一切正常。 有人可以帮
我是第一次使用 SimpleXMLElement,需要在我的 XML 中生成一行,如下所示: 我之前没有对命名空间使用过 addAttribute 并且无法在这里使用正确的语法 - 我已经开始了:
我正在解析一个 Webserivce 响应并且我有一个奇怪的行为, 这是what returns me the WS的一个小例子 输出是用 var_dump($results); 完成的 但如果我这样
我正在查询YouTrack的网络服务以获取问题列表。响应是如下所示的XML: Bug
我正在使用 xpath 解析网页中的文本,但它将它作为对象返回,我如何将其作为字符串返回。 libxml_use_internal_errors(TRUE); $dom = new DOMDocume
如何访问作为数组的 SimpleXMLElement 子项? SimpleXMLElement(9) { name => "John" (11) phone => array(2) [ 0
我有这个: [1]=> object(SimpleXMLElement)#6 (1) { ["@attributes"]=> array(14) { ["name"]=>
我是一名优秀的程序员,十分优秀!