XML :: Simple删除根元素

use*_*387 2 perl xml-parsing

嗨我有一个xml数据,我从哈希数组得到,当我做一个Dumper上面时输出如下:

$var1=
    '<Data>
            <Data1>ABC</Data1>
            <Data2>ABCD</Data2>
    </Data>';
Run Code Online (Sandbox Code Playgroud)

我在一个变量调用$ var1中.现在我正在使用XML::Simple它...它有点像:{Data1=>'ABC',Data2=>'ABCd'};

第一个标签数据消失了.怎么了?

Ant*_*nko 8

似乎有充分证据:

KeepRoot => 1:

在尝试返回没有多余细节和不必要的间接级别的数据结构时,XMLin()通常会丢弃根元素名称.将KeepRoot选项设置为1将导致保留根元素名称.所以在执行此代码后:

     $config = XMLin('<config tempdir="/tmp" />', KeepRoot => 1)
Run Code Online (Sandbox Code Playgroud)

您将能够引用tempdir "$config->{config}->{tempdir}"而不是默认值 "$config->{tempdir}".

  • `<config ...>`只是XML的一个示例,忽略它.通过将`KeepRoot => 1`传递给`XMLin`来解决您的问题:`my $ var2 = XMLin($ var1,KeepRoot => 1)`.现在结果将在最顶层有一个"Data"键,表示外部XML标记. (3认同)