ermst4r / xml2readablearray
将xml转换为数组字符串(node1.node2.node3),这样您可以通过拆分字符串来通过多维数组检索它们。
1.0.3
2017-02-18 15:02 UTC
Requires
- php: >=5.3.0
- prewk/xml-string-streamer: ^0.8.0
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