Liquid Mapping中如何将XML属性值正确映射到JSON?
Liquid Mapping获取XML属性值的正确方法
我有如下XML Schema片段:
<xs:element name="DESCR"> <xs:complexType> <xs:sequence> <xs:element name="ADDITIONAL"> <xs:complexType> <xs:sequence> <xs:element name="DESCR_CODE"> <xs:complexType> <xs:attribute name="CODE" type="xs:unsignedInt" use="required" /> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element>
期望通过Liquid Mapping转换为以下JSON结构,但无法获取DESCR_CODE元素的CODE属性值:
"DESCR": { "ADDITIONAL": { "DESCR_CODE": "{{DESCR.ADDITIONAL.DESCR_CODE.CODE}}" } }
在Liquid中访问XML属性时,需要在属性名前加上**@符号**来区分XML元素和属性。你的写法没有区分属性类型,所以无法正确取值。
正确的Liquid表达式应该是:
"DESCR": { "ADDITIONAL": { "DESCR_CODE": "{{DESCR.ADDITIONAL.DESCR_CODE.@CODE}}" } }
原因是:当Liquid解析XML时,会将普通元素解析为对象的层级属性,而XML元素的属性会被统一命名为@属性名的格式,因此必须通过@CODE的写法才能准确访问到DESCR_CODE元素的CODE属性值。
内容的提问来源于stack exchange,提问作者F22
相关产品推荐
相关产品推荐

