需要帮助获取子节点

Posted

技术标签:

【中文标题】需要帮助获取子节点【英文标题】:Need help getting child nodes 【发布时间】:2012-05-10 11:37:54 【问题描述】:

当我将它移动到另一台服务器时,我正在读取我的 XML 并循环遍历子节点,它停止工作,任何关于它为什么会停止的想法..

这里是 XML:

<masterxmlholder>   
    <userinfo login="user1">
    <rde-idea:lastlogin code="0">Wed Dec 31 17:00:00 MST 1969</rde-idea:lastlogin>
    </userinfo>

    <userinfo login="user2">
    <rde-idea:lastlogin code="4564568522258">Wed Dec 31 17:00:00 MST 1969</rde-idea:lastlogin>
    </userinfo>
</masterxmlholder>

这是我试图与孩子接触的循环

foreach ($xml->children() as $user) 
    echo '<tr><td> Name :  </td><td>' . $user['login'] . $user->lastlogin '</td><td>';


echo '</table></center>';

现在我可以从每个子节点中获取要显示的名称属性,但是我无法让任何子节点的内部节点显示

这一切都是为了让你知道我想要做什么......但它基本上是为了看看我如何尝试访问子节点并可能指出我的缺陷。

感谢阅读。

【问题讨论】:

【参考方案1】:

lastlogin 信息实际上是 userinfo 节点的子节点,因此您需要再次使用 children() 方法来检索信息。请注意,在此示例中,我删除了 XML 命名空间,以便可以初始化 $xml

$xmlstring = <<<XML
<masterxmlholder>   
    <userinfo login="user1">
    <lastlogin code="0">Wed Dec 31 17:00:00 MST 1969</lastlogin>
    </userinfo>

    <userinfo login="user2">
    <lastlogin code="4564568522258">Wed Dec 31 17:00:00 MST 1969</lastlogin>
    </userinfo>
</masterxmlholder>
XML;

$xml = new SimpleXMLElement($xmlstring);
echo '<center><table>';

foreach ($xml->children() as $user) 
    $name = $user['login'];
    foreach ($user->children() as $child ) 
       $lastlogin = $child;
    
    echo '<tr><td> Name :  </td><td>' . $name . $lastlogin . '</td></tr>';

echo '</table></center>';

我在这里测试了代码:http://writecodeonline.com/php/

旁注,我不会使用center 标签,因为它会将演示与内容混合在一起,这是不受欢迎的。考虑使用CSS 来设置表格的样式和位置。

【讨论】:

@jarrad 我在你的修复中得到了一个未定义的变量,我需要在 foreach 中或之前声明 var 吗? 我现在无法访问 php 环境...稍后当我可以访问时,我将使用经过验证的代码编辑我的答案... 太棒了!,谢谢你的帮助伙伴!我期待您的编辑。 @jarrid ya 但正如我上面所说,我不能使用 $user->lastlogin 来返回任何结果是否有特定的 PHP 设置会阻止这个子节点?我是否应该在 PHP 中寻找允许它的设置。它在我的环境中工作得很好,但是当我将它移到另一个位置时,服务器就出现了故障。我用 simpleXML 加载这个我不认为这有什么不同。 说到无聊,最后的编辑全搞砸了。应该是现在......对此感到抱歉。

以上是关于需要帮助获取子节点的主要内容,如果未能解决你的问题,请参考以下文章

jQuery获取父节点子节点兄弟节点

easyui tree 怎么获取选择节点子节点上的值?js怎么写?

如何使用 XPATH for XML 获取子节点数

计算特定XML节点c#的子节点数[重复]

EasyUI tree 选中父节点子节点全部选中,选中子节点父节点不选中

实战之部署Redis哨兵模式-Docker版本