Разбор XML с использованием PHP с несколькими пространствами имен

0

У меня есть xml файл, с которым мне сложно провести синтаксический анализ: мне нужно получить значение из XML файла

<?xml version="1.0" encoding="UTF-8"?>
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <soapenv:Body>
            <ns1:PerfmonCollectCounterDataResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://schemas.cisco.com/ast/soap/">
                <ArrayOfCounterInfo soapenc:arrayType="ns1:CounterInfoType[2]" xsi:type="soapenc:Array" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
                    <item xsi:type="ns1:CounterInfoType">
                        <Name xsi:type="ns1:CounterNameType">\\172.16.106.18\Number of Replicates Created and State of Replication(ReplicateCount)\Number of Replicates Created</Name>
                        <Value xsi:type="xsd:long">603</Value>
                        <CStatus xsi:type="xsd:unsignedInt">1</CStatus>
                    </item>
                    <item xsi:type="ns1:CounterInfoType">
                        <Name xsi:type="ns1:CounterNameType">\\172.16.106.18\Number of Replicates Created and State of Replication(ReplicateCount)\Replicate_State</Name>
                        <Value xsi:type="xsd:long">2</Value>
                        <CStatus xsi:type="xsd:unsignedInt">1</CStatus>
                    </item>
                </ArrayOfCounterInfo>
            </ns1:PerfmonCollectCounterDataResponse>
        </soapenv:Body>
    </soapenv:Envelope>

Ниже приведен код, который я запускаю:

// fclose($fopen);
// if (file_exists($filename)) {    
    // $output = simplexml_load_file($filename,null,null,"http://www.w3.org/2001/XMLSchema-instance",true);  // I have also tried without the namespaces
    ;
    //$output = simplexml_load_string($xmldata);

    //var_dump($output);
    //print_r($output);     
} else {
    echo "File not found";
}

Ниже представлен пустой объект, который я получаю:

object (SimpleXMLElement)[3]
SimpleXMLElement Object ( )

Помощь Pls.

Теги:
soap
cisco-axl

1 ответ

0

Это на самом деле не пустой объект и имеет против него методы. Это ожидается. Если вы это сделали

echo $output->asXML(); 

Вы увидите возвращаемую строку XML.

Теперь выполните методы против этого, чтобы перебрать набор данных и получить ваши конкретные значения.

Кроме того, если вы часто работаете с отладкой simplexml, рассмотрите эту функцию

  • 0
    Спасибо за обновление, функция simplexml_tree () выглядит как ffod. Я буду исследовать это. Я использовал «asXML», и он возвращает значения всего XML. Я использовал echo $ output-> Body-> PerfmonCollectCounterDataResponse-> ArrayOfCounterInfo [1] -> item-> Value .... и я получаю сообщение об ошибке Попытка получить свойство необъекта в C: \ wamp \ www \ axl .php. Пожалуйста, дайте мне знать, что, кажется, здесь ошибка. Я новичок в разборе XML
  • 0
    @RAVI SOAP требует, чтобы его собственный NS передавался методу ->children()
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню