2013-09-30 116 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的值。 –