【发布时间】:2018-06-17 14:34:17
【问题描述】:
我有一个使用 PHP 的 file_get_contents 读取的 XML 文件,因此可以对其进行其他更改。
我需要在整个文件中找到并删除节点<BATCHALLOCATIONS.LIST>...<BATCHALLOCATIONS.LIST>(不仅仅是这两行,而是整个节点之间的内容)。
由于文件已经使用file_get_contents 加载,我想这样做,而不必使用simpleXML、XML 解析器或任何其他方法(如 DOM)再次加载文件。
节点没有特定的父节点,随机出现。
XML 文件是从商业会计软件中导出的。
关于如何实现这一点的任何想法?也许使用正则表达式进行搜索和替换或类似的事情?
我一直在尝试使用正则表达式和 preg_replace 来执行此操作,但无法正常工作。
Here's just a portion of the file。原始运行到 10K+ 行。
这应该有效,但没有
preg_replace('/^\<BATCHALLOCATIONS.LIST\>(.*?)\<\BATCHALLOCATIONS.LIST\>$/ism','', $newXML);
我正在尝试在不使用任何 HTML/XML 解析器的情况下执行此操作。
【问题讨论】:
-
不要不使用正则表达式来更改 XML 文件。请改用
lxml或其他一些 XML 解析器。 -
@zx485 ...
lxml是 Python 库,而不是 PHP。 OP 应该使用 DOMDocument 或 SimpleXML 类。 -
当然你是对的。对于这个错误,我深表歉意。
标签: php regex xml preg-replace