6

社内処理の一環として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>

に記載されているメソッドのオプションの$formatパラメータは役に立たないようです。toString()XML::LibXML::Document

4

2 に答える 2

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>
于 2011-08-28T05:28:32.727 に答える
1

別のツールを使用してもかまわない場合は、XML::Tidyをお勧めします。それは一つの仕事をします、そしてそれはそれをうまくやります。

于 2011-08-27T18:21:13.303 に答える