我正在使用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>
我正在寻找(没有<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>
答案 0 :(得分:13)
标记是从用户提供的数据结构生成的XML的根元素。 来自XML::Simple文档 -
RootName =&gt; 'string'#out - handy
默认情况下,生成XMLout()时 XML,根元素将被命名 '选择'。此选项允许您 指定替代名称。
指定undef或空 RootName选项的字符串将 生成没有根元素的XML。在 大多数情况下生成的XML片段 不会'形成'和 因此无法读回来 XMLin()。不过,该选项有 被发现在某些方面很有用 情况。
要将根元素设置为空白,只需将RootName作为'undef'传递给XMLout,例如。
use XML::Simple;
my $xml = XMLout($hashref, RootName => undef);
答案 1 :(得分:1)
我在搜索相同的信息(读取,解析,修改和输出xml,修复<opt>
根标记)时遇到了这个答案,但是在Ruby中。
仅供参考,根节点也可以在库的Ruby version中删除或命名:
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 <opt> to <html>
答案 2 :(得分:0)
上述答案对我不起作用。你能做的是:
my $xml = XML::Simple->new(KeepRoot=>0);
print $xml->XMLout($YourVariable);
也就是说,有效的XML文档应该有一个根。如果您要执行的操作是命名根节点,则可以执行以下操作:
print $xml->XMLout({'RootNodeName' => {'ChildNode'=>[@ArrayOfThings]}});