如何从字符串中获取孤立的布尔值xml值

时间:2014-02-18 15:04:13

标签: php xml arrays string curl

我正在使用一个返回一些我无法获取的XML数据的API。

登录成功后,会话密钥将通过身份验证,API将返回布尔值“true”。

格式如下:

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>

在使用更多嵌套结构格式化其他XML数据的情况下,我已经能够使用以下PHP来提取数据

$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等......?

由于

里海

2 个答案:

答案 0 :(得分:0)

int number= getResources().getInteger(R.integer.yourNumber);

答案 1 :(得分:0)

XML具有命名空间定义。所以元素的“真实/内部”名称是{http://tessiturasoftware.com/}:boolean。要在不忽略命名空间的情况下获取此元素,您需要为其注册前缀。 SimpleXML有方法registerXpathNamespace()。之后,您可以使用前缀作为命名空间字符串的别名。如果您注册tess,则该元素可以作为tess:boolean进行处理。

我更喜欢DOM,因为它允许我做更复杂的Xpath,比如将结果转换为字符串并进行比较。

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