ermst4r/xml2readablearray

将xml转换为数组字符串(node1.node2.node3),这样您可以通过拆分字符串来通过多维数组检索它们。

1.0.3 2017-02-18 15:02 UTC

This package is not auto-updated.

Last update: 2024-09-28 20:03:47 UTC


README

将xml转换为数组字符串并解析节点无需任何努力。

实际场景

您有一个xml文件,但不想为每个xml文件编写解析器。您能做什么?安装这个包:)

示例

我们想要解析这个XML文件。

<?xml version="1.0" encoding="utf-8"?>
<root>
    <items>


    <node>I am</node>
    <node1>a</node1>
    <node2 id="1337">1337 h4xor</node2>
    </items>
</root>

1. 打开xml文件

$n = new \Ermst4r\Xml\XmlReaderFacade('feed.xml');

2. 显示该xml文件的映射

现在我们可以以字符串格式查看xml节点。如果您运行此代码

print_r($n->showXmlMapping());

我们看到如下内容

Array ( [0] => items.node [1] => items.node1 [2] => items.node2 [3] => items.node2.id )

3. 解析

现在,如果我们遍历xml节点,我们可以解析项。假设我只想获取node2及其id...我们只需传递一个包含数组节点名称的数组。下面是示例。

PS. 请记住,我们可以从showXmlMapping()方法中获取项;-)...

while($node = $n->streamingNode()) {

    var_dump($n->XmlArrayToValuesFacade(['items.node2','items.node2.id'],$node));
    
}

于是我们得到了xml的值。(只有!is_array()的项将被解析)

如果您想解析所有项,可以这样做

while($node = $n->streamingNode()) {

    var_dump($n->XmlArrayToValuesFacade($n->showXmlMapping(),$node));
    
}

4. 高级

我们甚至可以解析具有嵌套节点和属性的复杂xml文件。原则与步骤1、2、3相同。

致谢

我希望这个包能帮助您解析xml文件。这个包也被用于我的开源项目http://www.dfbuilder.com。Dfbuilder是一个开源工具,可以将文件导出为不同格式。

充满爱意...

Erwin Nandpersad

http://www.ermmedia.nl