问题标签 [domdocument]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
9019 浏览

php - DOMDocument:忽略重复的元素 ID

我正在DOMDocument使用DOMDocument::loadHTML.

它出现了各种错误:

ID x 已在实体第 X 行中定义

有没有办法让DOMDocument(或整洁)忽略或去除重复的元素 ID,所以它实际上会创建DOMDocument?

谢谢。:)

0 投票
1 回答
4413 浏览

php - 如何使 DOMDocument 在 PHP 中编写独立 = 是?

我正在使用 PHP5 创建 XML 文件。我有这样的代码:

问题是创建的 XML 代码以这样的根节点开始:

但我希望它是这样的:

我想我需要在 $doc 上调用一些函数,但我不知道是哪一个?

0 投票
5 回答
5783 浏览

php - PHP XML 解析

在 PHP 中解析 XML 文件的最佳方法是什么?

首先
使用 DOM 对象


使用 simplexml_load 方法

注意:这是我知道的两个。如果有更多的填写。

想知道哪种方法最适合解析巨大的 XML 文件,也想知道哪种方法最快,而不管该方法需要实现的方式

大小从 500KB 到 2MB 不等。如果可能的话,解析器应该能够在最少的时间内解析大文件和小文件,并具有良好的内存使用率。

0 投票
2 回答
1757 浏览

php - 使用 DOMXPath 替换节点,同时保持其位置

好的,所以那天晚上我有了一个巧妙的小想法,为 DOMDOCUMENT 创建一个辅助类,它在某种程度上模仿 jQuery 操作 HTML 或基于 XML 的字符串的 DOM 的能力。使用 XPath 代替 css 选择器。例如:

这将在每个结果节点上调用回调函数。不幸的是,PHP 版本 < 5.3.x 不支持 lambda 函数或闭包,所以我不得不暂时做一些类似这样的事情:

目前一切都很好,我认为这个项目对很多人都有用,但我坚持使用其中一个功能。我正在尝试模仿 jQuery 的“替换”方法。使用以下代码,我可以通过应用以下方法轻松完成此操作:

这个方法背后的代码是:

现在,这行得通。它将每个结果元素替换为 $Content 的克隆版本。问题在于它将它们添加到父节点的子节点列表的底部。问题是,我如何克隆这个元素来替换其他元素,同时仍然保留 DOM 中的原始位置?

我正在考虑对要替换的节点进行逆向工程。基本上,从 $Content 复制值、属性和元素名称,但我无法更改目标元素的实际元素名称。

反射可能是一种可能性,但必须有一种更简单的方法来做到这一点。

有人吗?

0 投票
6 回答
15260 浏览

php - 在 PHP 中调试 DOMDocument 对象

我正在尝试在 php 中调试一个大而复杂的 DOMDocument 对象。理想情况下,如果我能让 DOMDocument 以类似数组的格式输出,那就太好了。

DoM文档:

这输出

而我希望它输出

或类似的东西。为什么没有方便的调试或输出?!?

0 投票
7 回答
22661 浏览

php - 在 PHP 中使用 DOMDocument 缩进

我正在使用DOMDocument生成一个新的 XML 文件,并且我希望文件的输出能够很好地缩进,以便人类读者易于理解。

例如,当DOMDocument输出此数据时:

我希望 XML 文件是:

我一直在四处寻找答案,我发现的一切似乎都在试图以这种方式控制空白:

但这似乎没有任何作用。也许这仅在读取 XML 时有效?请记住,我正在尝试编写新文档。

有什么内置的东西DOMDocument可以做到这一点吗?还是可以轻松完成此任务的功能?

0 投票
4 回答
6868 浏览

php - 如何防止 PHP 的 DOMDocument 编码 html 实体?

我有一个使用 PHP 的 DOMDocument 替换字符串中锚点的 href 属性的函数。这是一个片段:

问题是 loadHTML($text) 在 doctype、html、body 等标签中包围了 $text。我尝试通过这样做而不是 loadHTML() 来解决这个问题:

不幸的是,这对所有实体(包括锚)进行了编码。有谁知道如何关闭这个?我已经彻底查看了文档并尝试破解它,但无法弄清楚。

谢谢!:)

0 投票
2 回答
868 浏览

php - PHP DOMDocument:loadHTMLFile 被一个神秘的字符窒息:RS

使用 php 的 DOMDocument->LoadHTMLFile('test.html'); 继续向我返回错误,在第 36 行报告内容中的错误。删除一个又一个字符,结果发现这是一个明显的空白空间,这是罪魁祸首。在另一个编辑器(Editra)中复制/粘贴该句子,显示出一个奇怪的 RS 字符。

它是什么,更重要的是,我怎样才能避免它再次发生?

0 投票
2 回答
509 浏览

php - DomDocument 未能为 RSS 提要添加“链接”元素

我正在尝试使用 DomDocument 在 PHP 中创建一个 RSS 提要,但每次我尝试创建一个像http://domain.com这样的节点时,脚本都会失败

我收到以下错误..

XML 解析错误:标签不匹配。预期的: 。位置:http://daddydonkey/feed.rss 第 4 行,第 58 列:这是一个描述 ---------------------------- -----------------------------^

0 投票
1 回答
1164 浏览

php - 在保留 DOM 的同时解析 XML 时如何获取详细的错误信息?

我正在构建一个 Web 表单,我的站点上的管理员可以在其中将 XML 添加到 textarea 并将其提交以存储在数据库表中,但我对解析 XML 的最佳方法有点困惑。

PHP 脚本需要解析 XML,如果有任何解析错误,它应该将错误消息和解析器停止的行/列返回给提交表单的管理员。解析之后,它需要访问 DOM 以使用 XPath 运行多个节点和属性的存在性检查。

如果我使用xml_create_parser()and xml_parse(),如果返回 false ,我可以获得详细的错误信息。但是,解析后我无法访问 XML 的 DOM。如果我使用DOMDocument::loadXML(),从我读过的内容来看,它不会为解析错误抛出异常,它只是将它们输出到 PHP 日志。

考虑到文件大多小于 10KB,少数为 10-20KB,如果我第一次尝试xml_parse()然后如果成功,运行会不会对性能造成很大的影响?DOMDocument::loadXML()有谁知道更好的方法?