2

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") の説明のみをインポートするにはどうすればよいですか?

4

2 に答える 2

2

Try

$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".';
于 2014-04-07T02:09:55.530 に答える
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"]
于 2013-02-01T00:37:21.920 に答える