如何按名称获取xml标记

时间:2013-08-14 08:27:00

标签: php xml

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

没有成功。有什么问题?

5 个答案:

答案 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