开发者

PHP XML Parsing

I am making get request in PHP but the parser is having issues. I am looking for a way to retreive the value of URL in the following example. The response xml looks like this.

<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
<testtemplate JobName="test1">
<Sources>
 <Source开发者_如何学Go xmlns="http://www.microsoft.com/test/schema/api">
    <System>
      <SystemIdentifier>HTTPS</SystemIdentifier>
      <URL>http://example.com</URL>
    </System>
 </Source>
</Sources>
<testtemplate>

and my PHP code looks like this:

$xml = DOMDocument::LoadXML($response);
$mypath = new DOMXPath($xml);
$mypath->registerNamespace("a", "http://www.microsoft.com/test/schema/api");

$url = $mypath->evaluate("/testtemplate/Sources/Source/System/URL");
$message = $url->item(0)->value;

print($message);

Any help would be appreciated.

Thanks Ashish


Your sample XML is malformed (the testtemplate is not closed), assuming that is just a typo lets get on to fixing your main issue.

You'll need to use that namespace which was registered in order to access the elements within it, and the DOMElement from item(0) does not have a value property (nodeValue is used instead).

$xml = DOMDocument::LoadXML($response);
$mypath = new DOMXPath($xml);
$mypath->registerNamespace("a", "http://www.microsoft.com/test/schema/api");

// These two lines have changed, slightly.
$url = $mypath->evaluate("/testtemplate/Sources/a:Source/a:System/a:URL");
$message = $url->item(0)->nodeValue;

print($message);
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜