0

我有这个 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;

没有成功。怎么了?

4

5 回答 5

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

看起来你混合了两者。

于 2013-08-14T08:34:30.070 回答
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
于 2013-08-14T08:34:33.790 回答
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
于 2013-08-14T12:10:31.160 回答
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;

?

于 2013-08-14T16:31:28.383 回答
-1

你应该像这样使用:

$xml = simplexml_load_string($xml);
echo $xml->DataSet->Table->Expire_x0;

不要使用根标签InternalData

于 2013-08-14T08:38:11.333 回答