如何替换XML::Simple 中的标签是否带有原始标签名称?

发布于 2024-08-17 23:24:39 字数 236 浏览 6 评论 0原文

我正在使用 XML::Simple 编辑 XML 文件。之后更新的数据将发送到新的 XML 文件。但是这个过程会产生要添加的 标签,并且原始父标签会丢失。我想用原始标签名称替换 。我该怎么做?

I'm using XML::Simple to edit an XML file. After which the updated data is sent to a new XML file. But this procedure produces <opt></opt> tag to be added and the original parent tag is lost. I want to replace <opt> with the original tag name. How do I do that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

哀由 2024-08-24 23:24:39

请参阅 KeepRoot。您还应该考虑启用严格模式

#!/usr/bin/perl

use strict; use warnings;

use XML::Simple qw(:strict);
use Data::Dumper;

my $x = XMLin(\*DATA, KeepRoot => 1, ForceArray => 1, KeyAttr => ['the']);

print XMLout($x, KeepRoot => 1, KeyAttr => ['the']);

__DATA__
<this>
<that the="other">This that and the other</that>
</this>

输出:

<this>
  <that the="other">This that and the other</that>
</this>

See KeepRoot. You should also consider enabling strict mode.

#!/usr/bin/perl

use strict; use warnings;

use XML::Simple qw(:strict);
use Data::Dumper;

my $x = XMLin(\*DATA, KeepRoot => 1, ForceArray => 1, KeyAttr => ['the']);

print XMLout($x, KeepRoot => 1, KeyAttr => ['the']);

__DATA__
<this>
<that the="other">This that and the other</that>
</this>

Output:

<this>
  <that the="other">This that and the other</that>
</this>
就是爱搞怪 2024-08-24 23:24:39

您正在突破 XML::Simple 的限制。当你不喜欢它所做的事情时,就该做点别的事情了。其他内容取决于您的问题,但我喜欢 XML::Twig

You're stretching the limits of XML::Simple. When you get to the point where you don't like exactly what it does, it's time for something else. What that something else is depends on your problem, but I like XML::Twig.

瑾夏年华 2024-08-24 23:24:39

在新的xml文件中,您可以使用正则表达式来查找要删除的模式,然后替换为您想要的模式,即原始标签。

 @ar="xml file";
 $pat="tag you want to replace";
 $rep="original tag";


 foreach $a (@ar) {
   if ($a =~ s|$pat|$rep|gi;
   }

xml 文件处理程序名称=@arr;

in the new xml file you can use regular experessions to find the pattern you want to remove and then replace with the pattern you want,that is original tag.

 @ar="xml file";
 $pat="tag you want to replace";
 $rep="original tag";


 foreach $a (@ar) {
   if ($a =~ s|$pat|$rep|gi;
   }

xml file hander name=@arr;

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文