我正在尝试使用 XML::Simple 更新一些 Java 应用程序的 server.xml 文件。虽然我能够很好地解析和更新对象,但输出XMLout
给我带来了一些麻烦。它似乎坚持将所有原始属性扩展为单个元素,这在我的 Java 应用程序启动时会感到困惑。
以下是部分 XML 的示例:
<Server port="9000" shutdown="SHUTDOWN">
<Service name="Catalina">
<Connector port="9002" redirectPort="8443" enableLookups="false" protocol="AJP/1.3" URIEncoding="UTF-8"/>
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on"/>
</Service>
</Server>
我通过以下方式进行了小改动XMLin
:
$xml->XMLin("server.xml", ForceArray => ['Connector']);
$server_xml->{'port'} = $server_port;
$server_xml->{'Service'}->{'Connector'}->[0]->{'port'} = $http_port;
然后我像这样输出我的文件:
XMLout($server_xml, RootName => 'Server', KeepRoot => 0, NoAttr => 1, OutputFile => "server.xml");
在 Data::Dumper 中一切似乎都运行良好并且看起来不错,但是当我查看我的输出时,我现在有这样的 XML:
<Server>
<Listener>
<SSLEngine>on</SSLEngine>
<className>org.apache.catalina.core.AprLifecycleListener</className>
</Listener>
...
我需要把所有东西都卷起来,但尽管我尽了最大的努力,但到目前为止我还没有做到这一点。