gpt4 book ai didi

PHP:自动生成的 XML 回车实体出现 w/SimpleXML 和 xpath

转载 作者:数据小太阳 更新时间:2023-10-29 02:38:11 27 4
gpt4 key购买 nike

我正在使用 SimpleXML 和 xpath 从外部 UTF-8 XHTML 文档中读取元素。然后,我迭代地回显 SimpleXML 的 asXML() 函数对从 xpath 选择器返回的每个元素执行的输出。但是 XML 回车实体很烦人,在我的代码的每一行之后插入。 XHTML 文档中没有任何额外的字符。是什么原因造成的?这似乎是我遍历从 xpath 返回的每个数组元素的方式。当我只是直接从 SimpleXML 的 asXML()(不使用 xpath)输出一个元素时,我没有得到实体。

<?php
$content = new DOMDocument();
$content->loadHTMLFile(CONTENT.html);
$story = simplexml_import_dom($content->getElementById('story'));
$topics = $story->xpath('div[@class="topic"]');
foreach ($topics as $topic) {
$topicContents = $topic->xpath('div/child::node()'); // Array of elements within 'content'.
foreach ($topicContents as $contentElement) {
echo $contentElement->asXML();
}
}
?>

带有自动生成的 XML 回车符的输出 XHTML 代码摘录:

<div class="content">&#13;
<p>Lorem ipsum dolor sit amet</p>&#13;
<h2>Lorem ipsum</h2>&#13;
<p>Lorem ipsum dolor sit amet</p>&#13;
<ul>
<li>Lorem ipsum</li>&#13;
<li>Lorem ipsum</li>&#13;
<li>Lorem ipsum</li>&#13;

最佳答案

这就是 libxml 处理文本节点中的\r 的方式。

<?php
$xml = <<< XML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="en">
<head>
<title>...</title>
</head>
<body><pre>a\nb<b>\r\n</b>c</pre></body>
</html>
XML;<br/>
$content = new DOMDocument();
$content->loadhtml($xml);
$content = simplexml_import_dom($content);
echo $content->asxml();
版画
<html lang="en"><head><title>...</title></head><body><pre>ab&#13;c</pre></body></html>
(\n 字符“单独放置”,而\r\n 被处理为 \n)
我不是 XML 专家,但我 认为根据 http://www.w3.org/TR/REC-xml/#sec-line-ends
To simplify the tasks of applications, the XML processor MUST behave as if it normalized all line breaks in external parsed entities (including the document entity) on input, before parsing, by translating both the two-character sequence #xD #xA and any #xD that is not followed by #xA to a single #xA character.
它应该将\r\n 视为单个\n 但它没有。
如果它不会给你带来严重的麻烦,那就忍受吧......

关于PHP:自动生成的 XML 回车实体出现 w/SimpleXML 和 xpath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1053429/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com