使用simplexml和php访问某个节点的所有子节点

使用simplexml和php访问某个节点的所有子节点,php,xml,simplexml,children,Php,Xml,Simplexml,Children,我有一个问题,答案肯定很简单,但只是缺乏我这边的理解 我有一个xml文件,下面是一个简短的示例 <item id="1234"> <property name="country_id"> <value>4402</value> </property> <property name="rc_maintenance_other"> </property> <

我有一个问题,答案肯定很简单,但只是缺乏我这边的理解

我有一个xml文件,下面是一个简短的示例

<item id="1234">
    <property name="country_id">
        <value>4402</value>
    </property>
    <property name="rc_maintenance_other">
    </property>
    <property name="claim_right_shareholder">
    </property>
    <property name="charges_other">
    </property>
    <property name="other_expenses_heating">
    </property>
    <property name="unpaid_bills_amount">
    </property>
    <property name="iv_person_phone">
        <value>03-6756711</value>
    </property>
</item>
<item id="9876">
   ...
</item>
非常感谢你

但是,如何仅对某个项目使用children函数呢

该方法始终用于Simplexml中的某个元素。所以你可以通过使用它来做到这一点

$element->children();
手册是这样写的:

查找给定节点的子节点

但是,如何仅对某个项目使用children函数呢

该方法始终用于Simplexml中的某个元素。所以你可以通过使用它来做到这一点

$element->children();
手册是这样写的:

查找给定节点的子节点


我希望这能帮助你

代码


示例:

我希望这能对您有所帮助

代码


示例:

首先编写代码,说明如何从中访问子元素。将其存储在变量中。对其调用children方法。正如你所写的,你知道第一部分是如何工作的,你也知道children方法,所以它基本上只是把这两个部分放在一起。可能是重复的,但我可能不完全理解你的问题,也许会有一些启发。您的意思是要获取所有子体吗?可能是重复的,请首先编写代码,说明如何访问您希望子体来自的item元素。将其存储在变量中。对其调用children方法。正如你所写的,你知道第一部分是如何工作的,你也知道children方法,所以它基本上只是把这两个部分放在一起。可能是重复的,但我可能不完全理解你的问题,也许会有一些启发。你的意思是要得到所有的后代吗?可能是重复的谢谢你它工作得很好!我知道这很简单,但我的大脑不想输出它。我在前面使用$id变量生成路径,并像这样调用foreach$xml->xpath$path as$item,如果其他人需要它,这里还介绍了如何访问属性节点的值:$path='//item[@id='.$id.]';foreach$xml->xpath$path as$item{foreach$item->children as$child{foreach$child->children as$value{echo$child['name'].=.$value.}}}谢谢,效果很好!我知道这很简单,但我的大脑不想输出它。我在前面使用$id变量生成路径,并像这样调用foreach$xml->xpath$path as$item,如果其他人需要它,这里还介绍了如何访问属性节点的值:$path='//item[@id='.$id.]';foreach$xml->xpath$path as$item{foreach$item->childrenas$child{foreach$child->childrenas$value{echo$child['name'].=.$value.}}
$xml = new SimpleXMLElement('<item id="1234">
    <property name="country_id">
        <value>4402</value>
    </property>
    <property name="rc_maintenance_other">
    </property>
    <property name="claim_right_shareholder">
    </property>
    <property name="charges_other">
    </property>
    <property name="other_expenses_heating">
    </property>
    <property name="unpaid_bills_amount">
    </property>
    <property name="iv_person_phone">
        <value>03-6756711</value>
    </property>
</item>');

foreach ($xml->xpath('//item[@id="1234"]') as $item)
{    
    foreach ($item->children() as $child) {
      echo $child['name'] ."\n";
    }
}
country_id
rc_maintenance_other
claim_right_shareholder
charges_other
other_expenses_heating
unpaid_bills_amount
iv_person_phone