vregistry/mergexml

将多个XML来源(字符串、文件、DOM对象)合并

1.1.2 2019-07-15 17:52 UTC

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

来源必须具有相同的默认命名空间(如果有的话)。前缀'_'被保留来处理默认命名空间。

包内容

以下文件包含在内

  1. mergexml.php - MergeXML类;需要PHP 5.3+;
  2. example.html - 客户端用于选择XML文件并显示结果;
  3. example.php - 服务器端用于接收并传递XML数据并返回结果;
  4. test1.xml, test2.xml - 示例的测试数据;
  5. packxml.php - 用于压缩XML源的实用程序类。

MergeXML也实现了JavaScript(请参阅github.com)。

变更日志

2014年5月

  • mergexml.php
    • stay参数添加到AddFileAddSource方法
    • 添加了NameSpaces方法,用于注册/xpath 1st(单个)来源

2015年9月

  • mergexml.php
    • 添加了fmtenc参数
  • 添加了实用程序packxml.php以压缩XML字符串

2015年12月

  • mergexml.php
    • 添加了keep参数到__constructAddFileAddSource方法

2017年4月

  • mergexml.php

2018年5月

  • mergexml.php
    • 不区分大小写的编码检查

2019年7月

  • example.html
    • 选择多个文件(html5)