2013-09-30 42 views
0

如何使用simplexml_load_string从XML获取整个结果?从XML获取整个值

我的XML看起来像这样

<xml> 
    <code> 
     <codedesc>Code Name</codedesc> 
     100 
    </code> 
    <code> 
     <codedesc>Code Name 2</codedesc> 
     200 
    </code> 
</xml> 

当我使用此代码

$XML = simplexml_load_string($data); 
print_r($XML); 
与PHP加载

我只得到codedesc并没有码数,你可以在这里看到

https://eval.in/51562

+0

你或许应该被包裹在它自己的XML标记,号码,以便它可以很容易地识别。 – Jeemusu

+0

数字值也应该包装在XML标签中。 然后你可以得到它。 https://eval.in/51568 –

回答

2

你需要用XML包装你的值,以便它们可以被访问SED。

<xml> 
    <code> 
     <codedesc>Code Name</codedesc> 
     <value>100</value> 
    </code> 
    <code> 
     <codedesc>Code Name 2</codedesc> 
     <value>200</value> 
    </code> 
</xml> 

然后,您可以访问他们像这样:

$xml = simplexml_load_string($data); 

echo $xml->code[0]->value;  //100 
echo $xml->code[1]->value;  //200 
echo $xml->code[1]->codedesc; //Code Name 2 

如果你不能改变你的XML,下面应该工作:

echo $xml->code[0];   //100 
echo $xml->code[1];   //200 
+0

我无法控制XML输出。我想我可以使用正则表达式来包装值,但我希望有一些不需要修改XML本身的东西。 –

+0

在这种情况下,使用当前的设置执行'echo $ xml-> code [0]; '应该工作。 – Jeemusu

+0

它的工作,谢谢。 –

0

我不知道你是什么试图让SimpleXML正确地解析你的XML字符串,并返回一个名为'code'的数组的类,它有两个对象,分别叫做codedesc:

SimpleXMLElement Object 
(
    [code] => Array 
     (
      [0] => SimpleXMLElement Object 
       (
        [codedesc] => Code Name 
       ) 

      [1] => SimpleXMLElement Object 
       (
        [codedesc] => Code Name 2 
       ) 

     ) 

) 

如果您试图获取值(100,200) - 请尝试将它们放入XML元素中。

如果你想打印整个XML,尝试print_r($XML->asXML())(见this

+0

是的,我试图获得100和200的值。 –