从带有动态子元素的xml元素获取数据

时间:2018-07-04 14:38:26

标签: php xml

这是我需要访问其元素的示例xml。 在此示例中,我需要执行一个循环以添加另一个->以移动到另一个元素。我将从XML中获取值,而不生成XML

<Person>
      <Address>
         <State>
            <Code>101</Code>
         </State>
      </Address>    
</Person>    
<Person>
      <Address>
         <State>
            <Code>101</Code>
         </State>
         <Phone> 123456789</Phone>
      </Address>   
</Person>

代码:

for($i=0; $i< count(Person); $i++)
{
  $element .= '->{<<element>>['.$i.']}';            
}

//output would something be like an element to get data from XML:        `
$person->{'Address'}->{'State'}->{'Code'};`

1 个答案:

答案 0 :(得分:0)

我认为您可能想使用SimpleXML

循环中的$item类型为SimpleXMLElement,您可以从中获得$item->Address->State->Code之类的属性

$data = <<<DATA
<Persons>
<Person>
      <Address>
         <State>
            <Code>101</Code>
         </State>
      </Address>    
</Person>    
<Person>
      <Address>
         <State>
            <Code>101</Code>
         </State>
         <Phone> 123456789</Phone>
      </Address>   
</Person>
</Persons>
DATA;

$items = simplexml_load_string($data);
foreach ($items as $item) {
    echo $item->Address->State->Code;
}

Demo

如果要使用for循环和计数器,则可以使用:

$items = simplexml_load_string($data);
$count = count($items->Person);
for ($i = 0; $i < $count; $i++) {
    echo $items->Person[$i]->Address->State->Code;
}