2012-09-29 76 views
1

我使用php語言編程並使用庫SimpleXML從xml文件中提取語言翻譯。從庫中使用xpath獲取xml內容值SimpleXML

下面是從文件「file.xml」的XML文件摘錄:

<language> 
    <translations> 
     <string key="key1">This is a first translation</string> 
     <string key="key2">This is a second translation</string>  
    </translations> 
</language> 

現在我想要得到的XML內容的值(「這是第一次翻譯」)的字符串屬性「KEY1」 。

與代碼

$xml = simplexml_load_file('file.xml');  
$param = $xml->xpath("/language/translations/string[@key='key1']"); 

我得到正確的屬性。但我沒有發現如何修改xpath以獲得xml內容值。你可以幫我嗎?

+1

有人請糾正我,如果我錯了:XPath表達式'/語言/翻譯/字符串[@鍵=「鍵1」]'不返回一個屬性,它根據它的屬性返回一個元素。方括號基本上表示「哪個具有」 - 例如'foo [@bar]'是「找我一個'foo'*,它有一個屬性'bar'」 – IMSoP

+0

你是正確的IMSoP。 – prodigitalson

回答

1

只投它作爲一個字符串:

$nodes = $xml->xpath("/language/translations/string[@key='key1']"); 
$param = (string) $nodes[0]; 
+0

Thanxs的第一個答覆。 但是如果我從xpath進行強制轉換,我只能在變量$ param中獲得一個數組。但我想要有文字「這是第一次翻譯」。你可以幫我嗎? – user1708765

+0

啊......是的,即使只有一個節點,它會返回一個節點數組。更新的答案。 – prodigitalson

+0

如何獲得文本「這是第一個翻譯」呢?我知道這裏只存在一個節點,因爲xml字符串屬性值是唯一的。直到現在我還不明白,我是如何從xml節點獲取內容的。 – user1708765