2010-06-05 3 views
1

Я делаю запрос на получение в PHP, но у парсера возникают проблемы. Я ищу способ получить значение URL в следующем примере. Ответ xml выглядит так.PHP XML Parsing

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

и мой PHP код выглядит следующим образом:

$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); 

Любая помощь будет оценена.

Благодаря Ashish

+1

Что представляют собой «проблемы»? – Amber

ответ

2

Ваш образец XML имеет неверный формат (testtemplate не закрыта), предполагая, что это просто опечатка позволяет получить на фиксируя свой главный вопрос.

Вы должны будете использовать это пространство имен, которое было зарегистрировано для того, чтобы получить доступ к элементам внутри него, и DOMElement от item(0) не имеет value свойство (nodeValue используется вместо этого).

$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);