使用 XML::LibXML 迭代节点

2023-12-14

我正在使用 XML::LibXML(版本:1.70)。

我的 xml 输入文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<Equipment xmlns:xsd="http://www.w3.org/2001/XMLSchema"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Equipments>
    <ECID logicalName="SysNameAlpha" id="0"/>
    <ECID logicalName="SysNameBeta" id="1"/>
  </Equipments>
</Equipment>

和我的 Perl 脚本:

my $file = 'data.xml';
my $parser = XML::LibXML->new();
my $tree = $parser->parse_file($file);
my $root = $tree->getDocumentElement;

foreach my $camelid ($root->findnodes('Equipments')) {
    my $name =  $camelid->findvalue('ECID/@logicalName');
    my $id =  $camelid->findvalue('ECID/@id');
    print $name;
    print " = ";
    print $id;
    print ";\n";
}

我得到的输出是:

SysNameAlphaSysNameBeta = 01;

但我想要这样的输出:

SysNameAlpha = 0;    
SysNameBeta = 1;

我怎样才能实现这个目标?


只有一个Equipments节点,因此你只能得到一个$camelid扫描。为了补救,您可以稍微改变一下,例如迭代设备/ECID:

foreach my $camelid ( $root->findnodes('Equipments/ECID') ) {
    my $name =  $camelid->findvalue('@logicalName');
    my $id =  $camelid->findvalue('@id');
    ...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 XML::LibXML 迭代节点 的相关文章

随机推荐

  • 向自动生成的实体添加属性的最佳方法是什么(使用 VS2010 和 EF4)

    ASP NET MVC2 强烈支持在实体上使用属性 验证 扩展 Html 帮助器类等 如果我使用 VS2010 EF4 实体数据模型 edmx 和它的 cs 类 从数据库生成模型 并且我想添加属性 关于某些实体 最好的做法是什么 我应该如何
  • 如何在没有 cURL 的情况下使用 PHP HTTP POST XML 文件? [复制]

    这个问题在这里已经有答案了 我有一个从 MySql 中的表创建的 XML 我需要进行 HTTP Post 来将 XML 插入到 Web 服务中 Web 服务仅接受 SOAP HTTP POST 和 HTTP GET 方法 我尝试以不同的方式
  • Swing:将切换按钮与按钮组以及相应的菜单项链接在一起

    对于一个学校项目 我需要制作一个简单的绘画应用程序 可以绘制线条 椭圆形和矩形 作业指定我需要工具栏按钮and每种形状的菜单项 我想通过制作按钮来更进一步JToggleButtons在工具栏和菜单项中JRadioButtonMenuItem
  • 如何暂时关闭睿频加速?

    在我们的应用程序中 我们有针对不同类型的处理器架构优化的同一例程的多个版本 在安装过程中 我们运行性能测试并选择最佳版本的例程 如果使用的核心很少 最新的处理器可以提高频率 因此有时我们的测试会看到错误的例程版本 有什么方法可以暂时关闭睿频
  • Chrome 的 gwt 插件

    我正在开发 GWT 应用程序 在开发模式下 我可以在FF和IE中成功打开应用程序 但是 当我尝试在 Chrome 中打开它时 我发现缺少插件窗口 单击它后 它会下载我用来安装的 crx 我得到成功安装的对话框 但是 当我刷新浏览器时 我得到
  • 无论颜色如何,如何获得清晰的边缘

    我正在尝试开发一个使用 Android 相机检测卡 主卡 签证卡 客户卡等 的应用程序 为此我使用了 OpenCV4Android 版本 3 0 0 为了完成这个任务 我做了以下工作 1 使用将从相机拍摄的帧转换为灰度 Imgproc cv
  • Java/Swing:低调按钮高度?

    我想减小 JButton 的垂直尺寸 以下代码对于 K gt 1 工作正常 但我似乎无法减小大小 有什么建议么 JButton button get button here Dimension d button getPreferredSi
  • 如何在 Node 中追加到文件?

    我在尝试着append日志文件中的字符串 但是 writeFile 每次在写入字符串之前都会擦除内容 fs writeFile log txt Hello Node function err if err throw err console
  • 如何覆盖 DataGrid 选择行为?

    我想按以下方式修改 DataGrid 的选择行为 通常 当您选择了多行 然后单击已选择的项目之一时 选择将重置为仅单击的项目 我想更改它 以便如果在没有任何键盘修饰符的情况下单击多选行之一 则不会修改选择 这样做的目的是允许多项目拖放 我注
  • Coldfusion 开发者版和企业版有什么区别?

    我正在尝试测试 Coldfusion 以用于学习目的 但我真的不知道非免费企业版添加到免费开发人员版中的附加功能是什么 Thanks 从法律上讲 Enterprise 是供公众消费的 而 Dev 则不是 实际上 这意味着 Dev 版本 与
  • 新项目向导后卡在 Android Studio 中

    在使用 Eclipse ADT 很长时间之后 我决定尝试 Android Studio 我在 Windows 7 64 位计算机上工作 安装了 JDK 7 64 位 我已经下载了 Android Studio 0 3 2 安装了它 升级到
  • excel VBA 错误:调用的对象已与其客户端断开连接

    这似乎是一个正常的问题 我在这里搜索并尝试了很多建议 但错误仍然存 在 我想将当前工作簿中的 case1 工作表复制到现有工作簿 文件名是 workbook2 xlsx 它有一个名为 case2 的工作表 然后保存工作簿并关闭它 有时它工作
  • np.genfromtxt 返回带有“b”的字符串[重复]

    这个问题在这里已经有答案了 我正在学习 NUmpy 的不同功能 并且我有一个虚拟数据集here命名为 100 条销售记录 现在我想用它来阅读它np genfromtxt 我的阅读代码是 df3 np genfromtxt 100 Sales
  • RcppArmadillo:带有each_slice的Lambda表达式

    我有一个具有正定矩阵的三维数组 我想获得一个具有所有矩阵的 Cholesky 因子的相同大小的数组 我正在使用犰狳库和cube类型 有方便的功能each slice我正在尝试使用它 但我没有让 lambda 表达式正常工作 所以希望有人可以
  • 如何向我的活动栏视图容器的自定义扩展图标添加数字气泡

    我正在使用 Activitybar viewContainer 添加特定于我的扩展的侧边栏图标 当您单击侧栏中的图标时 它将打开一个显示列表的视图 该列表可以随时更新 我希望图标有一个数字 显示列表中有多少项目 就像未保存文件时的源代码管理
  • Java - 以声明顺序反射 getDeclaredMethods 奇怪的行为

    这是一个奇怪的行为发生getDeclaredMethods 这是场景 一个名为 Entity 的类 public class Entity private Object reference return the reference publ
  • 应用程序需要首先在 GAC 中安装 log4net 程序集

    当尝试将 VS2015 控制台应用程序安装到我的一台服务器上时 出现以下错误 https i stack imgur com gCJHk jpg 在另一台服务器上 它安装运行得很好 我能看到两者之间的唯一区别是它安装的服务器在 GAC 中有
  • 当 Debug = False 时,Heroku 服务器错误 (500),whitenoise 找不到 style.css

    当 debug 设置为 false 时 我收到服务器错误 500 但当 debug True 时该网站工作正常 这是 Heroku 日志 编辑 在 DJANGO 日志中进行更改后的新日志文件 2017 07 30T17 19 06 0000
  • 删除性能级联:删除一行及其多行的最快方法是什么?

    我有一个数据库 其中有一个父 帐户 行 该行与另一个表具有一对多关系 并且该表与另一个表具有一对多关系 这大约有 6 层深度 帐户位于顶部 最底部可能有数千行 甚至可以超过 100k 每个表上都有一个外键设置为级联删除 问题是 如果我尝试删
  • 使用 XML::LibXML 迭代节点

    我正在使用 XML LibXML 版本 1 70 我的 xml 输入文件如下所示