PHP XML Reader - Put Values into Array
在上一个问题中,我问如何从XML文件中提取值并将其放入数组中。
PHP xmlreader-数组问题的值
使用simpleXML时,我无法读取XML文件而没有返回错误。我只能假定XML文件包含一些错误字符,因为该文件已成功用PHP XMLreader读取,并将编码设置为ISO-8859-1。
理想情况下,我想使用simpleXML,因为循环看起来更简单,但是XMLreader似乎可以工作。
2。如果使用XMLreader,仅当在元素中找到特定值时,如何才能修改上一个问题将代码添加到数组中的代码?
示例:上一个问题的当前代码获取所有
您如何获取ID和用户名
1 2 3 4 5 6 7 8 9 10 11 | <!-- XML File --> <?xml version="1.0" encoding="UTF-8"?> <working version="2.0"> <group name="test"> <userdata> data <id>data</id> <username>data</username> </userdata> </group> </working> |
除了将UTF-8与SimpleXML一起使用外,没有其他方法可以使用。但是,由于SimpleXML是使用DOM的更简单方法,因此您可以改用DOM。实际上,您想要的在DOM中将非常简单。将
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php $xml = new DOMDocument("1.0","ISO-8859-1" ); $xml->load("path/to/file.xml"); $xpath = new DOMXPath( $xml ); $nodes = $xpath->query("/working/group/userdata[ title = '%%something%%' ]" ); $array = array(); foreach( $nodes as $k => $node ) { foreach( $node->childNodes as $cnode ) { $array[ $k ][ $cnode->nodeName ] = $cnode->textContent; } } ?> |
请注意:DOM和SimpleXML都将整个文档加载到内存中,然后才能对其进行处理。因此,如果您的文档大于PHP的可用内存(请参见
还请注意,我没有对此进行测试,但是它应该非常接近您的需求。而且,如果您还想要一个XMLReader示例,请告诉我。对我来说使用DOM更快:P