如何使用 Perl 查找和替换 XML 中的文本?

2023-12-05

我的 XML 文件看起来像这样:

<doc>
    <RU1>
       <conf> 
              <prop name="a" val="http://a.org/a.html> 
       </conf>    
    </RU1>
    <RAU1>
     <conf> 
              <prop name="a" val="http://a.org/a.html> 
       </conf>
    </RAU1>
    <RU2>
     <conf> 
              <prop name="a" val="http://a.org/a.html> 
       </conf>
    </RU2>
</doc>

我想将 perl 中以 RU 开头的所有父标签下的 prop 字段值中的“a.org”替换为“b.com”。如何以 xml 文件形式获取更改?


假设您的 XML 格式良好(事实并非如此),您可以使用多个 CPAN 模块为了工作。大多数工作将涉及解析文档、使用 XPath 查询找到您的部分,然后再次打印文档。

这是 XML::Twig 的示例。我必须修复 XML 才能对其进行解析。

#!/usr/bin/perl

use strict;
use warnings;

use XML::Twig;

my $twig = XML::Twig->new(
    twig_handlers => {
        'conf/prop' => sub { $_->{att}{val} =~ s/a.org/b.org/; }
    },
    pretty_print => "indented"
);
$twig->parse(join "", <DATA>);

$twig->print;


__END__
<foo>
<RU1>
   <conf>
          <prop name="a" val="http://a.org/a.html" />
   </conf>
</RU1>
<RAU1>
   <conf>
          <prop name="a" val="http://a.org/a.html" />
   </conf>
</RAU1>
<RU2>
 <conf> 
          <prop name="a" val="http://a.org/a.html" />
   </conf>
</RU2>
</foo>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Perl 查找和替换 XML 中的文本? 的相关文章

随机推荐

  • White Line 不断阻止 Android Studio 中的代码

    已经有一段时间了 我是 Android Studio 的新手 这条非常白的线或其他任何东西一直挡住我的视线 因为代码的可见性不断降低 迫使我继续重建我的项目 但什么也没有发生 请建议我一种可以帮助我的方法或原因 None
  • ASP.NET MVC网站从磁盘读取文件问题

    我正在阅读一个文本文件 其中包含在我正在处理的 MVC 网站中使用 C 的 SQL 插入语句 调试我正在使用的函数时工作正常并且插入发生 但是 一旦我发布该网站并在本地计算机上运行它 甚至将 IIS 设置为使用 asp net 4 0 它似
  • Shopify 中的内容安全违规

    我正在使用 Shopify 并向不同的服务器发出 ajax get 请求 我刚刚实现了它 所以我正在控制台上测试它 请求正在通过 我得到了我想要的响应 但我也收到以下消息 仅限报告 拒绝连接到 https myurl com ApiClie
  • s3- boto- 按上传时间列出存储桶内的文件

    我需要每小时从 s3 服务器下载 100 个最新文件 bucketList bucket list PREFIX 上面的代码创建了文件列表 但它不依赖于文件的上传时间 因为它是按文件名列出的 我对文件名无能为力 它是随机给出的 Thanks
  • Cuda 5.0 链接问题

    我只是想使用 cuda 5 0 预览版构建我的一个旧项目 链接时出现错误 告诉我找不到某些 cuda 函数 例如 undefined reference to cudaMalloc 我的链接命令包括以下 cuda 选项 L usr loca
  • 单击可折叠项时 jQuery Mobile 页面跳转到顶部

    我有一个带有面板导航的 jQuery Mobile 页面 最后两个元素可与其他菜单项折叠 展开或折叠这些会导致页面跳转到顶部 并且用户必须再次向下滚动才能选择显示的条目之一 我试图通过执行来抑制这种行为 preventDefault 在可折
  • 消除 Windows 中可执行文件的“发布者未经验证”警告

    我已经为 Windows 创建了一个应用程序 每次通过打开可执行文件运行该应用程序时 我都会在 Windows 中收到 发布者未经验证 警告 如果我是这个应用程序的唯一受众 那很好 但事实并非如此 有什么方法可以对我的应用程序进行编程 以便
  • D3.csv 未从本地 csv 文件加载数据

    I created a copy of the csv file in my local folder because i wanted to mess around with the data a little bit When i ge
  • 如何在 SQL Server 2005 中的一条语句中更新两个表?

    我想一次性更新两张表 如何在 SQL Server 2005 中执行此操作 UPDATE Table1 Table2 SET Table1 LastName DR XXXXXX Table2 WAprrs start stop FROM T
  • React - TypeError:无法读取未定义的属性(读取“params”)

    所以我收到一条错误消息 TypeError Cannot readproperties of undefined reading params TypeError Cannot read properties of undefined re
  • 声明多维数组时出现堆栈溢出异常

    一般来说 我对编程有点陌生 并且在声明 3D 和 4D 数组时遇到了问题 我在主函数的开头有几个这样的声明 但我已将问题范围缩小到这 4 个 string reg perm mark name 64 64 64 short reg perm
  • 按 data.frame 中连续年份的子集

    我在 R 中有一个 data frame data table 如下 df lt data frame ID c rep A 20 year c 1968 1971 1972 1973 1974 1976 1978 1980 1982 19
  • Laravel OrderBy 关系计数

    我正在尝试获取最受欢迎的黑客马拉松 这需要按相应的黑客马拉松进行排序partipants gt count 抱歉 如果这有点难以理解 我有一个具有以下格式的数据库 hackathons id name hackathon user hack
  • 获取应用程序上下文返回 null

    以下模式被认为是从我的 Android 应用程序中的任何位置获取应用程序上下文的方法 但有时做MyApp getContext 返回空值 我尝试通过删除来更改架构static from getContext 这样我会做MyApp getIn
  • GZipStream 正在切断 XML 的最后一部分

    我创建了一个名为 AddGZip 的扩展方法 如下所示 public static void AddGZip this HttpResponse response response Filter new GZipStream respons
  • WCF 客户端使用证书和用户名/密码凭据?

    我正在使用 ASP NET 公司内部的 Web 服务 我使用 svcutil exe 连接到服务并从 wsdl 生成绑定和类 我可以连接到开发版本 该版本不需要身份验证 现在我们正在增加安全性 我的新 URI 使用 https 但还需要用户
  • 要列出的结果集

    我想用我的数据库字段值创建一个列表 有 2 列 名字和姓氏 我想创建一个列表 将名称列中的所有名称存储在字段中 然后添加到我的 DTO 中 这可能吗 您可以遵循的步骤 首先你需要有一个List
  • WinRT C# - 创建转换器字符串到字符串以绑定 Gridview

    今天我来找你是为了一个 小 问题 我不知道如何创建一个简单的转换器 因为这是第一次 而且我没有找到一个简单的例子 我想为 gridview 绑定创建一个 字符串到字符串 转换器 这是针对图像源的 我从一个对象中获取一个字符串 这是图像的名称
  • 如何保持 sql 依赖关系达到其目的

    我有一个控制台应用程序 我想继续观察数据库表中特定列的变化 我通过互联网阅读 发现 sql 依赖关系很适合我的目的 我开始了解它并做了以下事情 创建一个类 在构造函数中 我调用了静态函数start我调用了一个具有所有 sql 依赖项设置的函
  • 如何使用 Perl 查找和替换 XML 中的文本?

    我的 XML 文件看起来像这样