Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP XML读取器根据父标记选择子标记_Php_Xml_Xml Parsing - Fatal编程技术网

PHP XML读取器根据父标记选择子标记

PHP XML读取器根据父标记选择子标记,php,xml,xml-parsing,Php,Xml,Xml Parsing,我有一个从中检索数据的大型XML文件,但我有几个实例,其中子元素的名称相同,XML读取器存储它遇到的最后一个: <VehicleRemarketingBoat> <MakeString> Rodman Sportfisher </MakeString> </<VehicleRemarketingBoat> <VehicleRemarketingEngine> <MakeString> Volvo </MakeS

我有一个从中检索数据的大型XML文件,但我有几个实例,其中子元素的名称相同,XML读取器存储它遇到的最后一个:

<VehicleRemarketingBoat>
<MakeString>
Rodman Sportfisher
</MakeString>
</<VehicleRemarketingBoat>

<VehicleRemarketingEngine>
<MakeString>
Volvo
</MakeString>
</VehicleRemarketingEngine>

你能提供一些关于你得到的错误的信息吗?当我尝试Var_转储时,错误基本上告诉我数组是空的。当我执行Sql插入时,它也是空的。当我做一个var_dump时,第一段代码中确实包含信息。你的问题遗漏了很多信息来回答它。要了解更通用的方法,请参见以下答案:您不需要使用XMLReader进行所有解析,只需要“记录”。在那之后,将记录扩展到DOM并使用Xpath。好的,我通过将simpleXML混合到if语句中解决了我遇到的问题,感谢您提供了问题的链接,以及这些问题
if($xml->nodeType == XMLReader::ELEMENT && $xml->localName ==  'VehicleRemarketingBoat'){
         $node = simplexml_import_dom($doc->importNode($xml->expand(), true));
         $content['MakeString'] = $node->MakeString;

    }
if($xml->nodeType == XMLReader::ELEMENT && $xml->localName ==  'VehicleRemarketingEngine'){
         $node = simplexml_import_dom($doc->importNode($xml->expand(), true));
         $content['EngineMake'] = $node->MakeString;
         $PreOwnedData[] = $content;
         var_dump($PreOwnedData);
    }