xml - 在 Perl 中使用 XML::Simple 将哈希转换为 XML 后内容丢失
问题描述
代码:
my $test = {
'a' => {
'disabled' => 'false',
'options' => '%build_options',
'mailStatus' => {},
'dependencies' =>{
'test' => {
'platforms' => {},
'name' => 'nightly-regressions',
'preRequisitePlatforms' => {},
'dependType' => 'pass'
},
},
'Above' => 'false',
'options' => {},
'critical' => 'true',
}
};
print XMLout($test, noattr=>1, KeepRoot=>1, RootName=>undef, NoEscape => 1);
当我运行上面的代码将哈希转换为 xml 时,缺少一级“测试”,我得到的输出 xml 是:
输出:
<a>
<Above>false</Above>
<critical>true</critical>
<dependencies>
<name>nightly-regressions</name>
<dependType>pass</dependType>
<platforms></platforms>
<preRequisitePlatforms></preRequisitePlatforms>
</dependencies>
<disabled>false</disabled>
<mailStatus></mailStatus>
<options></options>
</a>
谁能帮我找出我的代码有什么问题?
解决方案
尝试使用 strict 选项导入 XML::Simple:
use XML::Simple qw(:strict);
您会发现您缺少 KeyAttr 选项的值:
print XMLout($test, noattr=>1, KeepRoot=>1, RootName=>undef, NoEscape=>1, KeyAttr=>[]);
推荐阅读
- database - 为什么我不能在我的开关盒中使用我的投影场?
- reactjs - 如何正确将 react localStorage 转换为 react-native asyncStorage?
- python - 结合使用 map 和 lower 函数
- google-sheets - Google 表格上的多个查询过滤器
- java - Android Networking API 添加 Bearer 令牌
- javascript - 如何在反应中从css文件继承
- powershell - Start-Transcription 未创建文件但 vscode 未显示任何错误
- nginx - Vagrant 端口转发不适用于 nginx 服务器
- reactjs - 将 props/this 传递给组件(未定义?)
- c - 制作文件,单独编译失败