2013-02-01 83 views
2

我想过滤一个xml提要,所以我只用正确的语言导入数据。php简单的xml筛选器属性

结构为:

<profile_lang lang="en"> 
<description>English description</description> 
</profile_lang> 
<profile_lang lang="fr"> 
<description>French</description> 
</profile_lang> 
<profile_lang lang="nl"> 
<description>Dutch text</description> 
</profile_lang> 

我应该需要做的仅导入荷兰(LANG = “NL”)的描述?

回答

1

XPath是靶向/过滤的好方法/在一个XML结构

$xml = '<root><profile_lang lang="en"><description>English description</description></profile_lang><profile_lang lang="fr"><description>French</description></profile_lang><profile_lang lang="nl"><description>Dutch text</description></profile_lang></root>'; 
$simple = simplexml_load_string($xml); 
$description = $simple->xpath('/root/profile_lang[@lang="nl"]/description'); 
echo $description[0]; // Dutch text 

你可以拿出你自己的路径结构搜索特定元素,以满足您的需求

/root/profile_lang[@lang="nl"]/description 
//profile_lang[@lang="nl"]/description 
//profile_lang[@lang="nl"] 
//description[../@lang="nl"] 
1

尝试

$xml = <<<XML 
<profile_lang lang="en"> 
<description>English description</description> 
</profile_lang> 
<profile_lang lang="fr"> 
<description>French</description> 
</profile_lang> 
<profile_lang lang="nl"> 
<description>Dutch text</description> 
</profile_lang> 
XML; 

$xml = new SimpleXMLElement($xml); 
$nodes = $xml->xpath('//*[@lang="en"]'); 

echo 'Found ', count($nodes), ' node(s) with lang "en".';