如何删除XML :: Simple输出中的<opt>标记?

joe*_*joe 4 ruby xml perl

我正在使用Perl和XML :: Simple模块创建XML文件.我成功创建了XML文件,但问题是我<opt> </opt>的每个标签都有标签.我正在寻找任何可以避免<opt> </opt>标签的选项.我无法进行后处理以删除标签.因为文件很大.

示例:

<opt>
  <person firstname="Joe" lastname="Smith">
    <email>joe@smith.com</email>
    <email>jsmith@yahoo.com</email>
  </person>
  <person firstname="Bob" lastname="Smith">
    <email>bob@smith.com</email>
  </person>
</opt>
Run Code Online (Sandbox Code Playgroud)

我正在寻找(没有<opt>标签):

  <person firstname="Joe" lastname="Smith">
    <email>joe@smith.com</email>
    <email>jsmith@yahoo.com</email>
  </person>
  <person firstname="Bob" lastname="Smith">
    <email>bob@smith.com</email>
  </person>
Run Code Online (Sandbox Code Playgroud)

aks*_*aks 13

标记是从用户提供的数据结构生成的XML的根元素.来自XML :: Simple文档 -

RootName =>'string'#out - 方便

默认情况下,当XMLout()生成XML时,根元素将命名为"opt".此选项允许您指定备用名称.

为RootName选项指定undef或空字符串将生成没有根元素的XML.在大多数情况下,生成的XML片段不会"格式良好",因此无法通过XMLin()读回.尽管如此,已发现该选项在某些情况下有用.

要将根元素设置为空白,只需将RootName作为'undef'传递给XMLout,例如.

use XML::Simple;

my $xml = XMLout($hashref, RootName => undef);
Run Code Online (Sandbox Code Playgroud)