-
Notifications
You must be signed in to change notification settings - Fork 197
Open
Description
For the following XML document(SOAP service), XPath can't find the elements.
<?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>
<ServiceResponse xmlns="http://sub.domain.com">
<ServiceReturn>
<a>US</a>
<b>
<b>
<e>Herrod</e>
<f>[email protected]</f>
<g>Et Commodo LLC</g>
<i>07/14/2014</i>
</b>
<b>
<e>Armand</e>
<f>[email protected]</f>
<g>Vel Convallis In Consulting</g>
<i>04/18/2015</i>
</b>
<b>
<e>Bernard</e>
<f>[email protected]</f>
<g>Cursus Nunc Mauris PC</g>
<i>11/12/2015</i>
</b>
<b>
<e>Dante</e>
<f>[email protected]</f>
<g>Sit Amet Ltd</g>
<i>01/19/2016</i>
</b>
</b>
<c>0</c>
<k>12345678</k>
</ServiceReturn>
</ServiceResponse>
</soapenv:Body>
</soapenv:Envelope>
Here are the result of some functions
document.rootElement.firstChildWithTag("Body", inNamespace: "soapenv") //some
document.rootElement.firstChildWithTag("//soapenv:Body/ServiceResponse") //nil
document.rootElement.firstChildWithTag("//Body//b", inNamespace: "soapenv") //nil
document.firstChildWithXPath("//ServiceResponse") //nil
document.firstChildWithXPath("//ServiceReturn") //nil
document.firstChildWithXPath("//*/ServiceReturn/b/b") //nil
document.firstChildWithXPath("//ServiceReturn/b/b") //nil
document.firstChildWithXPath("//b/b") //nil
Another example
<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:OperationHistoryData xmlns:ns2="http://www.domain.org/operation" xmlns:ns3="http://www.domain.org/info" xmlns:ns5="http://www.domain.org/data">
<ns2:historyRecord>
<ns2:DestinationAddress>
<ns2:Index>190000</ns2:Index>
<ns2:Description>Info 1</ns2:Description>
</ns2:DestinationAddress>
</ns2:historyRecord>
</ns2:OperationHistoryData>
</S:Body>
</S:Envelope>
Whenever there is nested namespaces, ono can't parse it. I don't know maybe it is limitation of libxml. Only workaround I found is to strip name spaces and other attributes.
Metadata
Metadata
Assignees
Labels
No labels