我正在进行SOAP调用并获取以XML格式返回的数据。返回的XML有一个标记,我不知道如何处理。我只需要所有<web_get_debiteuren>
。
我想过使用php SimpleXMLElement(http://www.php.net/manual/en/simplexml.examples-basic.php)。但我无法做到这样的事情:
$xml = new SimpleXMLElement($result);
echo $xml->soap;
我如何能够浏览XML文件的所有结果<web_get_debiteuren>
部分?
请参阅以下XML:
<?xml version="1.0" encoding="windows-1250"?>
<soap:envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:body>
<getdatawithoptionsresponse xmlns="urn:Afas.Profit.Services">
<getdatawithoptionsresult>
<AfasGetConnector>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="AfasGetConnector">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="web_get_debiteuren">
<xs:complexType>
<xs:sequence>
<xs:element name="Nummer_debiteur" type="xs:string" minOccurs="0"/>
<xs:element name="Naam_debiteur" type="xs:string" minOccurs="0"/>
<xs:element name="E-mail_werk" type="xs:string" minOccurs="0"/>
<xs:element name="Voornaam" type="xs:string" minOccurs="0"/>
<xs:element name="Achternaam" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<web_get_debiteuren>
<Nummer_debiteur>10000</Nummer_debiteur>
<Naam_debiteur>Test</Naam_debiteur>
<Voornaam>Hans</Voornaam>
<Achternaam>Klok</Achternaam>
</web_get_debiteuren>
<web_get_debiteuren>
<Nummer_debiteur>11000</Nummer_debiteur>
<Naam_debiteur>Sven</Naam_debiteur>
<E-mail_werk>e@mail.com</E-mail_werk>
<Voornaam>Sven</Voornaam>
<Achternaam>Kramer</Achternaam>
</web_get_debiteuren>
<web_get_debiteuren>
<Nummer_debiteur>11001</Nummer_debiteur>
<Naam_debiteur>Ireen</Naam_debiteur>
<E-mail_werk>i@reen.nl</E-mail_werk>
<Voornaam>Ireen</Voornaam>
<Achternaam>Wust</Achternaam>
</web_get_debiteuren>
</AfasGetConnector>
</getdatawithoptionsresult>
</getdatawithoptionsresponse>
</soap:body>
</soap:envelope>
答案 0 :(得分:0)
您可以使用xpath。可能出现问题的样品:
Using xpath on a PHP SimpleXML object, SOAP + namespaces (not working..) parse an XML with SimpleXML which has multiple namespaces
但我认为,如果可能的话,你应该使用SoapClient ..
答案 1 :(得分:0)
感谢Nostalgie使用xpath的提示,我得到了它的工作。请参阅以下代码:
$response = simplexml_load_string( $result ,NULL, NULL, "http://schemas.xmlsoap.org/soap/envelope/" );
$response->registerXPathNamespace("site", "urn:Afas.Profit.Services");
$_res = $response->xpath('//site:AfasGetConnector');
#$_res = $_res->AfasGetConnector;
foreach($_res[0]->web_get_debiteuren AS $deb){
echo "Number: ".$deb->Nummer_debiteur."<br>";
}
这将输出:
Number: 10000
Number: 11000
Number: 11001
Number: 11002
Number: 11003
Number: 11004
感谢名单!