提问人:RichardLiu 提问时间:5/30/2023 更新时间:5/30/2023 访问量:37
PHP expat 解析器:如何区分“真实”[CDATA[...]] 部分和普通的 TEXT 节点?
PHP expat parser : How to distinguish "real" [CDATA[...]] section from normal TEXT node?
问:
我正在尝试使用内置的XML expat解析器在PHP中处理大型XML文件(~1GB)。我通过调用 来设置处理程序,以便我可以提取 TEXT 数据。xml_set_character_data_handler()
问题是,处理程序将在“正常”TEXT 节点和“实际”CDATA 部分(例如)上调用,但只有 CDATA 部分内容(即:“”)将传递给处理程序。<![CDATA[hello world]]>
hello world
所以我的问题:有没有办法知道传递给字符数据处理程序的数据是普通的TEXT节点,还是部分的内容?<![CDATA[...]]>
我需要知道这一点,因为 XML 数据需要遵循严格的格式规则并且不允许使用,并且我应该为这些格式错误的 XML 文件生成错误报告。<![CDATA[...]]>
PS:我已经尝试过了,但无法获得我的任务所需的 curren 节点的行号。我认为在处理大型XML文件时调用不是一个好主意。XMLReader
XMLReader::expand()->getLineNo()
答: 暂无答案
评论
#x0D;
#xd;
XMLReader
XMLReader::CDATA
libexpat
libxml2
<![CDATA[
<![CDATA[