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

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

示例:

   joe@smith.com jsmith@yahoo.com   bob@smith.com   

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

   joe@smith.com jsmith@yahoo.com   bob@smith.com  

标记是从用户提供的数据结构生成的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); 

我在搜索相同的信息(读取,解析,修改和输出xml,修复 root标记)时遇到了这个答案,但是在Ruby中。

仅供参考,根节点也可以在库的Ruby版本中删除或命名:

 require 'xmlsimple' # gem install xml-simple data = XmlSimple.xml_in(filename) # read data from filename # Parse data as needed, then output: XmlSimple.xml_out(data, { 'RootName' => nil }) # Remove root element XmlSimple.xml_out(data, { 'RootName' => 'html' }) # Change root  to  

上述答案对我不起作用。 你能做的是:

 my $xml = XML::Simple->new(KeepRoot=>0); print $xml->XMLout($YourVariable); 

也就是说,有效的XML文档应该有一个根。 如果您要执行的操作是命名根节点,则可以执行以下操作:

 print $xml->XMLout({'RootNodeName' => {'ChildNode'=>[@ArrayOfThings]}});