如何在 PHP 中解析此 XML 提要?
How do parse this XML feed in PHP?
我需要在 PHP 中解析以下格式荒谬的 XML 提要。它来自一家房地产公司,他们认为没有 'property type' 节点 - 相反,他们有一个用于公寓的 'apartment' 节点,一个用于房屋等的 'house' 节点。我的问题是我需要提取这些子节点以获得 'bedrooms'、'sub_type' 和其他信息(这是原始版本的精简版)。
<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 到 'grab' 提要并对元素执行 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
}
}
这是我得到的输出。正确的值,但显示了 3 次而不是 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
)
如果有人能指出正确的方向,我将不胜感激。哦,在你问之前,让他们重做他们的提要不是一种选择。
Please find below code :
Are you exactly want to like this?
$xmlObject = simplexml_load_file("XML File Path");
//print_r($xmlObject);
foreach($xmlObject->property as $property)
{
foreach($property as $test){
//print_r($test->sub_type);
echo "Bedrooms:-" .$test->bedrooms." ";
echo "Sub Type:".$test->sub_type;
//print_r($property->business->sub_type);
echo "</br>";
}
}
您的 xpath //sub_type
选择了整个文档中的所有 sub_type 个元素。
将其更改为 .//sub_type
应该会有所帮助
我需要在 PHP 中解析以下格式荒谬的 XML 提要。它来自一家房地产公司,他们认为没有 'property type' 节点 - 相反,他们有一个用于公寓的 'apartment' 节点,一个用于房屋等的 'house' 节点。我的问题是我需要提取这些子节点以获得 'bedrooms'、'sub_type' 和其他信息(这是原始版本的精简版)。
<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 到 'grab' 提要并对元素执行 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
}
}
这是我得到的输出。正确的值,但显示了 3 次而不是 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
)
如果有人能指出正确的方向,我将不胜感激。哦,在你问之前,让他们重做他们的提要不是一种选择。
Please find below code :
Are you exactly want to like this?
$xmlObject = simplexml_load_file("XML File Path");
//print_r($xmlObject);
foreach($xmlObject->property as $property)
{
foreach($property as $test){
//print_r($test->sub_type);
echo "Bedrooms:-" .$test->bedrooms." ";
echo "Sub Type:".$test->sub_type;
//print_r($property->business->sub_type);
echo "</br>";
}
}
您的 xpath //sub_type
选择了整个文档中的所有 sub_type 个元素。
将其更改为 .//sub_type
应该会有所帮助