How can I auto-indent XML nodes with XML::LibXML?

前端 未结 2 576
北海茫月
北海茫月 2021-01-12 18:57

I\'m adding nodes to my XML document as part some in-house processing, but cannot get XML::LibXML to auto-indent the added nodes.

I get output like the following:

相关标签:
2条回答
  • 2021-01-12 19:19

    I played a bit with settings and this seems to work:

    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);
    

    Result is this:

    <?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>
    
    0 讨论(0)
  • 2021-01-12 19:36

    If you don't mind using another tool, I recommend XML::Tidy. It does one job, and it does it well.

    0 讨论(0)
提交回复
热议问题