XML::Simple 2.18
Perl 5.10
我目前遇到的问题是强制执行 XML Parser 如何处理“approver”元素的单个与多个。在下面的 XML 中,使用单个“批准者”元素,解析器不会将该元素折叠成子哈希(但我需要它这样做,对于单个或多个)。
<ECREQUEST>
<request event="submit">
<form_id>3576</form_id>
<status>Initiated</status>
<form_fields>
<form_field_id id="13048" type="text">
<value><![CDATA[jamesj]]></value>
</form_field_id>
<form_field_id id="13047" type="text">
<value><![CDATA[jackh]]></value>
<resources>
<resource name="jackh">
<approval_type approver_id="0" name="single">
<approvers>
<approver name="jackh" reason=""/>
</approvers>
</approval_type>
</resource>
</resources>
</form_field_id>
</form_fields>
</request>
</ECREQUEST>
数据转储器:
'approver' => {
'name' => 'zhangj',
'reason' => ''
}
但是,如果您向 XML 添加另一个“批准者”元素,例如:
<approvers>
<approver name="jackh" reason=""/>
<approver name="jillr" reason=""/>
</approvers>
然后解析如下:Data Dumper:
'approver' => {
'jillr' => {
'reason' => ''
},
'jackh' => {
'reason' => ''
}
}
我尝试使用KeyAttr => { approver => "+name" }
XMLin,这将强制多个“批准者”元素包含名称属性,但不修复单个批准者元素...不幸的是,此选项还强制将 form_field_id 元素解析为数组而不是嵌套哈希(我不想要)。
如何强制解析器始终创建嵌套哈希,即使是单个元素?