如何删除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]}});