2012-09-29 49 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