我在我的XML文档中添加节点作为内部处理的一部分,但无法让XML::LibXML
自动缩进添加的节点。
我得到如下输出:
以下是我目前使用$xml->toString( 1 )
获得的内容:
<nested_nodes>
<nested_node>
<configuration>A</configuration>
<model>45</model>
<added_node>
<ID>
<type>D</type>
<serial>3</serial>
<kVal>3</kVal>
</ID>
</added_node>
</nested_node>
</nested_nodes>
我想要的是漂亮的打印输出:
<nested_nodes>
<nested_node>
<configuration>A</configuration>
<model>45</model>
<added_node>
<ID>
<type>D</type>
<serial>3</serial>
<kVal>3</kVal>
</ID>
</added_node>
</nested_node>
</nested_nodes>
XML::LibXML::Document
中记录的$format
方法的可选toString()
参数似乎没有帮助。
答案 0 :(得分:6)
我玩了一些设置,这似乎有效:
use XML::LibXML;
my $doc = XML::LibXML->load_xml(string => <<END_XML, { no_blanks => 1 });
<nested_nodes>
<nested_node>
<configuration>A</configuration>
<model>45</model>
<added_node>
<ID>
<type>D</type>
<serial>3</serial>
<kVal>3</kVal>
</ID>
</added_node>
</nested_node>
</nested_nodes>
END_XML
print $doc->toString(1);
结果如下:
<?xml version="1.0"?>
<nested_nodes>
<nested_node>
<configuration>A</configuration>
<model>45</model>
<added_node>
<ID>
<type>D</type>
<serial>3</serial>
<kVal>3</kVal>
</ID>
</added_node>
</nested_node>
</nested_nodes>
答案 1 :(得分:1)
如果您不介意使用其他工具,我建议XML::Tidy。它完成了一项工作,而且做得很好。