如何分别从每个父节点获取子节点?

2024-03-13

我有一些数据 Xml..

<main>
  <TabNavigator x="27" y="11" width="455" height="376" id="gh" backgroundColor="#A4B6E9">
    <NavigatorContent width="100%" height="100%" label="Client" id="clientTab"></NavigatorContent>
    <NavigatorContent width="100%" height="100%" label="Admin" id="adminTab"></NavigatorContent></TabNavigator>
    <TitleWindow x="521" y="84" width="377" height="234">
      <DataGrid x="0" y="0" width="375" height="163" borderVisible="true" id="details">
        <columns>
          <ArrayList>
            <GridColumn dataField="Name" id="arrayName"/><GridColumn dataField="Address" headerText="Address"/>
            <GridColumn dataField="Phone_Number" headerText="Phone_Number"/>
          </ArrayList>
        </columns>
      </DataGrid>
      <Button x="139" y="167" height="28" label="Export"/>
    </TitleWindow>
</main>

我使用以下代码来检索给定 XML 的子名称。

private function urlLdr_complete(event:Event):void{
var xmlData:XML=new XML(URLLoader(event.currentTarget).data);                       
for each (var t:XML in xmlData.children()) 
{
   Alert.show(t.Name);
}

但我只得到 2 个子节点(TabNavigator 和 TitleWindow)。如何获取每个父节点中的其他子节点?我想要每个父母都有单独的孩子。我怎么才能得到它?


您需要使用递归函数沿着树走下去。使用trace()代替alert():

private function urlLdr_complete(event:Event):void
{
    var xmlData:XML=new XML(URLLoader(event.currentTarget).data);
    showNodeName(xmlData);
}

private function showNodeName($node:XML):void
{
    // Trace the current node
    trace($node.name());
    if($node.hasChildNodes)
    {
        for each (var child:XML in $node.children())
        {
            // Recursively call this function on each child
            showNodeName(child);
        }
    }
}

或者,使用 E4X后代() 函数:

private function urlLdr_complete(event:Event):void
{
    var xmlData:XML=new XML(URLLoader(event.currentTarget).data);
    // Trace the root node:
    trace(xmlData.name());
    // And trace all its descendants:
    for each(var child:XML in xmlData.descendants())
    {
        trace(child.name());
    }
}

两者应该产生相同的结果:

main
TabNavigator
NavigatorContent
NavigatorContent
TitleWindow
DataGrid
columns
ArrayList
GridColumn
GridColumn
GridColumn
Button

我还没有测试过,但我希望内置的descendants() 函数会更有效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何分别从每个父节点获取子节点? 的相关文章

随机推荐

  • java垃圾收集日志中的“GC--”是什么意思?

    我们打开了详细 GC 日志记录来跟踪已知的内存泄漏 并在日志中获取以下条目 3607872 687 GC 471630K gt 390767K 462208K 0 0325540 secs 3607873 213 GC 458095K gt
  • Python 3 如何检查一个值是否已经在列表中的列表中

    我的 Python 3 中有一个列表列表 mylist a x x b x x c x x x只是一些数据 我有我的代码可以做到这一点 for sublist in mylist if sublist 0 a sublist 1 subli
  • 如何与 AlarmManager 结合启动通知?

    我正在尝试弄清楚应该如何启动通知 创建通知不是我所要求的 而是一种在后台启动它的方法 这样它就不引人注目 并且用户可以做他们正在做的任何事情 它是日历 准确地说是提醒 同样重要的是要注意我正在使用AlarmManager 我应该使用什么方法
  • ng-repeat动画完成回调

    所以我有一个简单的 ng repeat 和在 javascript 中定义的输入动画 沙盒 http codepen io anri82 pen KwgGeY http codepen io anri82 pen KwgGeY Code d
  • 从 CompletableFuture.allof() 获取单独的结果

    我有一个类 它使用 CompletableFutures 向两个依赖服务发出并发请求 我的代码如下所示 Builder Slf4j public class TestClass NonNull private final ExecutorS
  • R 中分层样本的单向方差分析

    我有一个包含三组 a b c 的分层样本 这些样本是从较大的总体 N 中抽取的 所有组都有 30 个观察值 但它们在 N 中的比例不相等 因此它们的采样权重不同 我用surveyR 中的包来计算汇总统计数据和线性回归模型 并且想知道如何计算
  • 如何使用jquery在div内容更改时发出警报

    我想在 div 内容发生变化时发出警报消息 jquery api 是否为 div 元素提供了任何侦听器 绑定dom修改事件 document ready function test div bind DOMNodeInserted DOMS
  • Pandas 数据帧性能

    Pandas 确实很棒 但我真的很惊讶从 Pandas DataFrame 检索值的效率是多么低下 在下面的玩具示例中 即使是 DataFrame iloc 方法也比字典慢 100 倍以上 问题 这里的教训是否只是字典是查找值的更好方法 是
  • Angular 2打字稿调用javascript函数

    是否有正确的方法从 Angular 2 TypeScript 中的组件调用 JavaScript 函数 这是我的组件 import ElementRef AfterViewInit from angular core export clas
  • 无法运行 arquillian 测试

    我正在尝试使用 Arquillian 进行一些单元测试 但是我找不到它们在使用 Maven 部署时失败的原因 这是班级测试 package com ndeveloper spec test import javax inject Injec
  • 使用 SSL 访问 RDS - 不支持的记录版本 Unknown-0.0

    我正在使用亚马逊RDS MySQL并与SSL证书 默认证书位于http s3 amazonaws com rds downloads mysql ssl ca cert pem http s3 amazonaws com rds downl
  • PHPUnit 中的assertEquals 和assertSame 之间的区别?

    PHPUnit 包含一个assertEquals https phpunit de manual current en appendixes assertions html appendixes assertions assertEqual
  • 在 llvm 上运行 x86 程序

    是否可以使用llvm来运行x86程序 IE 我想使用 llvm 作为 x86 模拟器来运行 x86 程序 然后对 x86 程序进行检测 Thanks 我想你正在寻找LibCPU http LibCPU Org It has x86 前端 h
  • 安卓。画布缩放和平移

    我创建了自定义视图 您可以在其中触摸和缩放它 大部分作品都是在这个的帮助下创作的post http android developers blogspot com 2010 06 making sense of multitouch htm
  • 休眠在批处理文件中

    当编写批处理文件以在 Windows 机器上自动执行某些操作时 我需要暂停其执行几秒钟 通常在测试 等待循环中 等待进程启动 当时 我能找到的最好的解决方案是使用 ping 我没有骗你 来达到预期的效果 我找到了一篇更好的文章here ht
  • 在 Redhat 6.3 上安装 R 3+

    我想在我的 Red hat 集群上安装 R 其版本如下 cat etc redhat release Red Hat Enterprise Linux Server release 6 3 Santiago 当我访问 R 的主页时 这就是他
  • CQL3 现在是否需要 Cassandra 的架构?

    上周我刚刚参加了 Cassandra 速成课程 从 Thrift API 到 CQL 再到摸索 SuperColumns 才知道我不应该使用它们 而应该使用复合键 我现在正在尝试 CQL3 似乎我无法再插入到架构中未定义的列 或者在sele
  • Django - 应用程序目录中的静态文件

    在开发环境中 我想使用应用程序目录中的静态文件 settings py SITE ROOT os path dirname os path realpath file STATIC ROOT os path join SITE ROOT s
  • 如何在android中实现将sqlite导出到excel/csv文件?

    我正在开发 Android 应用程序 其中 SQlite 作为数据库 我想以编程方式将某些结果从数据库导出为 excel 文件格式 想要将该 excel 存储到本地设备路径 我遇到过以下链接 在Android中以编程方式将SQlite数据库
  • 如何分别从每个父节点获取子节点?

    我有一些数据 Xml