我有这个XML:
<InternalData>
<DataSet>
<Table>
<Expire_x0>2050-12-12T00:00:00+02:00</Expire_x0>
</Table>
</DataSet>
</InternalData>
如何获取<Expire_x0>
标记的值?
我试过这个:
$result = $s->__call("XmlString",array($params));
$obj_pros = get_object_vars($result);
$xml = $obj_pros['XmlStringResult'];
$xml = simplexml_load_string($xml);
$x = $xml->getElementsByTagName("Expire_x0");
echo $x;
没有成功。有什么问题?
答案 0 :(得分:2)
或者:
$dom = new DOMDocument;
$dom->loadXML($xml);
$expiresx0 = $dom->getElementsByTagName('Expire_x0');
foreach ($expiresx0 as $expirex0) {
echo $expirex0->nodeValue, PHP_EOL;
}
http://php.net/manual/de/domdocument.getelementsbytagname.php
或者:
$xml = simplexml_load_string(xml);
echo $xml->DataSet->Table->Expire_x0;
http://php.net/manual/de/function.simplexml-load-file.php
看起来你们两个都混在一起。
答案 1 :(得分:2)
如果我理解正确,您希望获得<Expire_x0>
标记的值,您可以使用此代码。
$xml = simple_xml_load_string($xml); //Load XML String
$xml = json_decode(json_encode($xml), true); //Convert to Standard PHP Array
$expire = $xml['InternalData']['DataSet']['Table']['Expire_x0']; //Find Tag Value
答案 2 :(得分:0)
试试这个
<?php
$k = '<InternalData>
<DataSet>
<Table>
<Expire_x0>2050-12-12T00:00:00+02:00</Expire_x0>
</Table>
</DataSet>
</InternalData>';
$xml = simplexml_load_string($k);
echo $xml->DataSet->Table->Expire_x0;
}
输出
2050-12-12T00:00:00+02:00
答案 3 :(得分:0)
有很多方法......
哪一个更受欢迎? 是否更好用:
$dom = new DOMDocument;
$dom->loadXML($xml);
$expiresx0 = $dom->getElementsByTagName('Expire_x0');
或:
$xml2 = simplexml_load_string($xml);
$xml2 = json_decode(json_encode($xml2), true);
$expire = $xml2['DataSet']['Table']['Expire_x0'];
或者也许:
$xml1 = simplexml_load_string($xml);
$x = $xml1->DataSet[0]->Table[0]->Expire_x0;
echo $x;
答案 4 :(得分:-1)
你应该使用:
$xml = simplexml_load_string($xml);
echo $xml->DataSet->Table->Expire_x0;
请勿使用根标记InternalData