Мне нужно прочитать сложный XML-файл, и мне нужно получить конкретный родительский узел каждого узла под названием «Беспорядок» ... позвольте мне показать XML-файл:Прочитайте родительский родительский узел с Xpath в сложном XML
<ClassificationNode>
<Disorder id="14879">
<OrphaNumber>101943</OrphaNumber>
<ExpertLink lang="en">
http://www.orpha.net/consor/cgi-bin/OC_Exp.php?lng=en&Expert=101943
</ExpertLink>
<Name lang="en">Rare hepatic and biliary tract tumor</Name>
</Disorder>
<ClassificationNodeChildList count="3">
<ClassificationNode>
<Disorder id="21130">
<OrphaNumber>300557</OrphaNumber>
<ExpertLink lang="en">
http://www.orpha.net/consor/cgi-bin/OC_Exp.php?lng=en&Expert=300557
</ExpertLink>
<Name lang="en">Carcinoma of the ampulla of Vater</Name>
</Disorder>
<ClassificationNodeChildList count="0"></ClassificationNodeChildList>
</ClassificationNode>
В каждом теге Disorder есть родитель-расстройство, в данном случае «Беспорядки» «Карцинома ампулы Vater» - это ребенок расстройства «Редкая опухоль печени и желчного тракта». Я попытался получить значение тезисов с XPath в PHP, что не мой код:
$parent = $simplexml->xpath("../../Disorder/Name");
Но массив достигает нуль до меня .... я пробовал много раз с другим XPATH синтаксиса, но никакого успеха. Я использую SimpleXML для чтения Disorder узлов, поскольку XML является небольшим (0.36MB) и SimpleXML является более простым, чем XMLReader.That это код, где им читают узлы:
if ($node->nodeType == XML_ELEMENT_NODE && $node->localName == "Disorder") {
$dom = new DomDocument();
$data = $dom->importNode($node,true);
$dom->appendChild($data);
$simplexml = simplexml_import_dom($data);
$disease['name'] = "$simplexml->Name";
$disease['orpha'] = "$simplexml->OrphaNumber";
$disease['link'] = "$simplexml->ExpertLink";
$disease['parent'] = ????? ;
In «???? ?» где мне нужно вставить имя родителя Disorder фактического Disorder. Я так старался в течение 2 дней и ничего ...:/
Кто-нибудь может мне помочь?
Спасибо за ответы, ребята, я решил проблему, используя DOMNodeList. Я создал метод в PHP, этот метод преобразует узел, где мне нужно извлечь данные в DOMNodeList. С помощью NodeList легко извлечь данные с помощью префикса «childNodes». Кстати, спасибо o // –