2014-02-18 2 views
1

나는 얻을 수없는 XML 데이터를 반환하는 API를 사용하고 있습니다.문자열에서 orphan 부울 xml 값을 얻는 방법

로그인이 성공하면 세션 키가 인증되고 API는 부울 값 'true'를 반환합니다. 다음과 같이

는 포맷 : 다른 XML 데이터 나 데이터를 추출하기 위해 다음과 같은 PHP를 사용 할 수있었습니다 중첩 된 구조의 이상으로 포맷 된

This XML file does not appear to have any style information associated with it. 
document tree is shown below. 
<boolean xmlns="http://tessiturasoftware.com/">true</boolean> 

$prodresponse = curl_exec($getproductions); 
    if(curl_errno($getproductions)) 
{ 
echo 'Curl error: Unable to obtain session ID ' . curl_error($getproductions); 
} 

else{ 

$xmlContent = simplexml_load_string($prodresponse); 
echo $prodresponse; 
foreach($xmlContent->xpath('//Production')as$prod){ 
$prodid= $prod->prod_season_no; 
echo "<form action='GetProductionDetail.php' method='GET'>"; 
echo "<h1>".$prod->prod_desc." </h1> <input type='submit' value='Book Now'> 
<input type='hidden' name='prodid' value=$prodid /></form>"; 
} 
} 

그러나 다음을 사용하여 부울 값을 반환하고 계정 세부 정보 페이지로 이동하면 아무런 데이터도 반환되지 않습니다.

$response2 = curl_exec($login); 

$xmlContent = simplexml_load_string($response2); 

if(curl_errno($login)) 
{ 
echo 'Curl error: Unable to login ' . curl_error($login); 
} 

else { 
echo 'test'; 
foreach($xmlContent->xpath('boolean') as $bool) { 
    echo $bool; 
    echo 'test'; 
} 
if ($bool=='true'){ 
echo'test'; 
header("Location: GetAccountDetails.php"); 
} 
} 

누군가가 내가 뭔가 잘못하고 있는지 말해 줄 수 있니, 그것이 simplexml_load_string과 관계가 있는지 아니면 simpleXMLObject를 만드는 데 도움이되는지 등등 ...?

감사

카스피

답변

0

XML은 네임 스페이스 정의가 있습니다. 따라서 요소의 "실제/내부"이름은 {http://tessiturasoftware.com/}:boolean입니다. 네임 스페이스를 무시하지 않고이 요소를 가져 오려면 접두어를 등록해야합니다. SimpleXML에는 그 방법이 registerXpathNamespace() 있습니다. 그런 다음 접두어를 네임 스페이스 문자열의 별칭으로 사용할 수 있습니다. tess을 등록하면 요소는 tess:boolean으로 처리 될 수 있습니다.

나는 더 복잡한 Xpath를 수행 할 수 있기 때문에 DOM을 선호한다. 결과를 문자열로 캐스팅하고 비교하는 것이 좋다.

$dom = new DOMDocument(); 
$dom->loadXml('<boolean xmlns="http://tessiturasoftware.com/">true</boolean>'); 
$xpath = new DOMXpath($dom); 
$xpath->registerNamespace('tess', 'http://tessiturasoftware.com/'); 

var_dump(
    $xpath->evaluate('string(/tess:boolean) = "true"') 
); 

프로그램 출력

bool(true) 
0
int number= getResources().getInteger(R.integer.yourNumber); 
+0

고마워, 난 그 일을 얻을 수없는 것. 또한 getResources(). getBoolean()을 시도하고 값을 반향하려고했지만 실패했습니다. – caspianturner

관련 문제