问题标签 [simplexml]

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 投票
4 回答
7302 浏览

php - 使用 PHP 和 simplexml 从 XML 中检索 CDATA 内容

我有以下 XML 结构:

我想从其中一个项目标签中获取数据。要访问此标记,我使用以下 xpath:

这确实以以下形式返回一个数组:

但是实际信息(存储在项目标签之间)在哪里?我一定是做错了什么,但我不知道那可能是什么......可能真的很简单......帮助将不胜感激。

0 投票
3 回答
127240 浏览

php - 使用 SimpleXML 从头开始​​创建 XML 对象

是否可以使用 PHP 的 SimpleXML 函数从头开始创建 XML 对象?查看函数列表,有一些方法可以将现有的 XML 字符串导入到可以操作的对象中,但是如果我只想从头开始以编程方式生成 XML 对象,那么最好的方法是什么?

我发现你可以使用 simplexml_load_string() 并传入你想要的根字符串,然后你有一个可以通过添加孩子来操作的对象......虽然这看起来像是一种黑客,因为我必须实际上在加载之前将一些 XML 硬编码到字符串中。

我已经使用DOMDocument 函数完成了它,虽然它有点令人困惑,因为我不确定 DOM 与创建纯 XML 文档有什么关系......所以也许它只是名字不好:-)

0 投票
3 回答
3522 浏览

php - 是什么减少了 PHP 服务器的负载:SimpleXML 或 json_decode?

我开始用 PHP 开发一个 web 应用程序,我希望它会变得非常流行,让我变得有名和富有。:-)

如果到了那个时候,我决定是使用 SimpleXML 将 API 的数据解析为 XML 还是使用 json_decode 可能会对应用程序的可扩展性产生影响。

有谁知道这些方法中哪一种对服务器更有效?

更新:我进行了初步测试,看看哪种方法性能更高。执行起来似乎json_decodesimplexml_load_string. 这并不是非常确定的,因为它不会测试诸如并发进程的可伸缩性之类的东西。我的结论是,我将暂时使用 SimpleXML,因为它支持 XPath 表达式。

结果:

0 投票
4 回答
5400 浏览

php - 带有空字符串的 PHP SimpleXML::addChild - 冗余节点

使用空字符串作为值(甚至使用空格)调用 addChild 似乎会导致在节点内添加冗余 SimpleXml 节点,而不是仅添加没有值的节点。

这是发生的事情的快速演示:

这是一个空字符串:

我目前使用的解决方法非常糟糕——我正在对最终的 JSON 进行 str_replace 替换!4jh5jh1uio4jh5ij14j34io5j!带有一个空字符串。呸。也许此时唯一的答案是“向 simplexml 提交错误报告”......

有没有人有更好的解决方案?

0 投票
5 回答
4933 浏览

php - 关闭 SimpleXML for PHP 中的自闭合标签?

我正在使用 PHP 的 SimpleXML 扩展构建一个 XML 文档,并且我正在向文件中添加一个令牌:

这会生成(我所知道的)一个自关闭或单个标签:

但是,我正在与之通信的老化的 Web 服务正在绊倒自闭标签,所以我需要有一个单独的开始和结束标签:

问题是,除了通过preg_replace运行生成的 XML 之外,我该怎么做?

0 投票
4 回答
4158 浏览

php - PHP SimpleXML、CodeIgniter 和 Apache 与 Suhosin

我有一个使用 CodeIgniter 框架用 PHP5 编写的应用程序。我让它在 Windows(使用 Xampp)和 Ubuntu(使用标准 Apache、PHP、MySQL 堆栈)上运行。

我有一个表单,它接受 XML,解析它(使用 simpleXML)并将结果发布到数据库中。

在 Windows 上 - 没问题,按预期工作。

在 Linux 上 - 大问题。它出错了。

我已经仔细检查了 XML,这很好。

我删除了大量的XML,似乎还可以。

我认为这与从表单发布的 XML 字符串的大小有关,但不确定。同样,在 Windows 上没问题 - 在 Linux 上,它会出错。

表格中发布的数据大小约为 160k(是的,这是很多文本,但它是自动化的 - 最终将达到 200k 左右)。

错误如下。

非常感谢任何帮助。

致命错误:在 /var/www/ci/system/application/controllers/system.php:49 中未捕获的异常“异常”和消息“字符串无法解析为 XML” 堆栈跟踪:#0 /var/www/ci/ system/application/controllers/system.php(49): SimpleXMLElement->__construct('') #1 [内部函数]: System->add_system() #2 /var/www/ci/system/codeigniter/CodeIgniter.php (233): call_user_func_array(Array, Array) #3 /var/www/ci/index.php(115): require_once('/var/www/ci/sys...') #4 {main} 抛出 /第 49 行的 var/www/ci/system/application/controllers/system.php

第 49 行如下所示:

$xml = new SimpleXMLElement($this->input->post('form_systemXML'));

编辑 - 固定

发现问题。Suhosin 安装在 Ubuntu 上。在文件 /etc/php5/apache2/conf.d/suhosin.ini 中,我启用了该行suhosin.post.max_value_length = 65000并将值更改为 195000。重新启动 Apache,一切正常。谢谢各位指点。

0 投票
18 回答
108795 浏览

php - 在 SimpleXML for PHP 中删除具有特定属性的子项

我使用 SimpleXML 访问了几个具有不同属性的相同元素:

我需要删除一个特定的seg元素,id 为“A12”,我该怎么做?我尝试遍历seg元素并取消设置特定的元素,但这不起作用,元素仍然存在。

0 投票
6 回答
8461 浏览

php - PHP SimpleXML。如何获得最后一项?

如何在 simplexml 对象中获取最后一项(或任何特定项)?假设您不知道会有多少个节点。

前任。

我想抓住最后<obj></obj>一块(甚至只是其中的一部分)。

0 投票
4 回答
492 浏览

php - 当我使用它从 HTML 中获取 img src 时,为什么这个正则表达式会返回错误?

我正在编写一个函数,它从它在 html 文件中找到的第一个图像标记中找出 src。按照此处此线程中的说明,我得到了一些似乎正在工作的东西:

但是在使用该函数几分钟后,它开始返回如下错误:

警告:simplexml_load_string() [0function.simplexml-load-string0]:实体:第 1 行:解析器错误:第 42 行的路径/到/脚本中标记 img 第 1 行中的数据过早结束。

警告:simplexml_load_string() [0function.simplexml-load-string0]: tp://feeds.feedburner.com/~f/ChicagobusinesscomBreakingNews?i=KiStN" border="0"> 在第 42 行的 path/to/script 中。

我对 PHP 有点陌生,但似乎我的正则表达式错误地分割了 HTML。我怎样才能使它更“密封”?

0 投票
4 回答
4251 浏览

php - 类似于 Python 中 PHP 的 SimpleXML 的东西?

Python 中有没有一种方法可以像 PHP 的 SimpleXML 扩展那样处理 XML 文件?

理想情况下,我只想能够从列表对象访问某些 xml 数据。