vregistry / mergexml
将多个XML来源(字符串、文件、DOM对象)合并
1.1.2
2019-07-15 17:52 UTC
Requires
- php: >=5.3.0
This package is auto-updated.
Last update: 2024-09-16 05:16:47 UTC
README
该类允许将XML来源(文件、字符串、对象)合并为单个DOM XML对象。合并操作在节点级别递归进行,添加新元素并替换现有元素。具有相同路径/名称的节点将按顺序替换/添加,修改可以通过选项进行控制。
MergeXML在需要从多个来源收集XML数据的情况下可能很有用。例如,将不同子系统的配置文件合并在一起,以适应系统操作。
用法
$oMX = new MergeXML([$opts]);
$opts - 选项数组
- join - 如果任何来源具有不同的根名称,则使用公共根名称(默认为root,指定false则不允许不同名称)
- updn - 通过名称序列(true,默认)或整体序列(false)遍历节点
- stay - 目标节点stay属性值,以防止特定节点的覆盖(默认为all,可以是值数组或空)
- keep - 源节点keep属性值,以防止特定节点的覆盖(默认为all,可以是值数组或空)
$oMX->AddFile($file);
$file - XML文件的路径名称
$oMX->AddSource($source);
$source - XML字符串或DOM对象
这些方法将连续合并源并返回最终对象或false(如果失败,请参阅下面的error属性)。
您可以在结果对象中进行搜索
$oMX->Query($expr);
$expr - XPath查询表达式
您可以得到XML结果树
$oMX->Get([0|1|2]);
- 0 - 对象(默认)
- 1 - 文本
- 2 - HTML
结果对象也可以通过$oMX->dom属性访问。可用的属性
- dom - 结果XML DOM对象
- dxp - 结果XPath对象
- nsp - 命名空间数组(前缀=> URI)
- count - 合并的来源数量
- error - 错误信息
- error->code ('' is ok)
- error->text
来源必须具有相同的默认命名空间(如果有的话)。前缀'_'被保留来处理默认命名空间。
包内容
以下文件包含在内
- mergexml.php - MergeXML类;需要PHP 5.3+;
- example.html - 客户端用于选择XML文件并显示结果;
- example.php - 服务器端用于接收并传递XML数据并返回结果;
- test1.xml, test2.xml - 示例的测试数据;
- packxml.php - 用于压缩XML源的实用程序类。
MergeXML也实现了JavaScript(请参阅github.com)。
变更日志
2014年5月
- mergexml.php
- stay参数添加到AddFile和AddSource方法
- 添加了NameSpaces方法,用于注册/xpath 1st(单个)来源
2015年9月
- mergexml.php
- 添加了fmt和enc参数
- 添加了实用程序packxml.php以压缩XML字符串
2015年12月
- mergexml.php
- 添加了keep参数到__construct、AddFile和AddSource方法
2017年4月
- mergexml.php
- 与PackApp混淆兼容
2018年5月
- mergexml.php
- 不区分大小写的编码检查
2019年7月
- example.html
- 选择多个文件(html5)