PHPで以下のばかばかしいXMLフィードを解析する必要があります。それは不動産会社のもので、「不動産タイプ」のノードを持っているとは思っていませんでした。代わりにアパート用の「マンション」ノード、住宅用の「ハウス」ノードなどがあります。私の問題は、 'bedrooms'、 'sub_type'などの情報を得るためにこれらのノードを使用します(これはオリジナルの非常に古いバージョンです)。PHPでこのXMLフィードを解析するにはどうすればよいですか?
<properties>
<property>
<general_info>
<id>1</id>
</general_info>
<apartment>
<sub_type>1</sub_type>
<bedrooms>2</bedrooms>
</apartment>
</property>
<property>
<general_info>
<id>2</id>
</general_info>
<house>
<sub_type>3</sub_type>
<bedrooms>5</bedrooms>
</house>
</property>
<property>
<general_info>
<id>3</id>
</general_info>
<business>
<sub_type>6</sub_type>
<bedrooms>0</bedrooms>
</business>
</property>
私は 'グラブ' にフィードをsimplexml_load_fileを使用して要素の上にforeachループを実行しています。いくつかの研究の後、xpathのように見えますが、私はそれを働かせることはできません。
は、ここに私のコードの基礎です:
$xmlObject = simplexml_load_file($XML_FILE_NAME);
foreach($xmlObject->property as $property)
{
// Get Property sub-type
$property_sub_types = $property->xpath('//sub_type');
foreach($property_sub_types as $sub_type)
{
print_r($sub_type); // printing to screen for demo purposes
}
}
これは私が取得しています出力されます。誰もが正しい方向に私を指すことができれば正しい値が、代わりに1
SimpleXMLElement Object
(
[0] => 1
)
SimpleXMLElement Object
(
[0] => 3
)
SimpleXMLElement Object
(
[0] => 6
)
SimpleXMLElement Object
(
[0] => 1
)
SimpleXMLElement Object
(
[0] => 3
)
SimpleXMLElement Object
(
[0] => 6
)
SimpleXMLElement Object
(
[0] => 1
)
SimpleXMLElement Object
(
[0] => 3
)
SimpleXMLElement Object
(
[0] => 6
)
の3倍を示し、それははるかに高く評価されると思い。ああ、あなたが尋ねる前に、彼らにフィードをやり直すことはオプションではありません。
正確な問題は何ですか? xpath式は結果を返していませんか? xmlに関連付けられたデフォルトの名前空間はありますか? –
XMLに残念なことにデフォルト名前空間は含まれていません。 –
@KeithHall私は、私が得ている出力で質問を更新しました。今はっきりしていることを願っています。 –