2014-11-25 2 views
0

У меня есть файл XML, который я с трудом, чтобы правильно разобрать: Мне нужно извлечь значения из XML-файлаАнализировать XML с помощью PHP с несколькими пространствами имен

<?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 он лейбористская партия

ответ

0

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

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

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

Кроме того, если вы имеете дело с отладкой SimpleXml часто, consider this function

+0

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

+0

@RAVI SOAP требует, чтобы его собственный NS был передан методу '-> children()' – Ohgodwhy

+0

. Я ударился головой об этом, но все еще не смог его пересечь. Либо я получаю нулевое значение, либо что-то вроде «Warning: SimpleXMLElement :: __ toString(): Узел больше не существует». какие-либо предложения?? – RAVI

Смежные вопросы