![](/img/trans.png)
[英]SOAP:1.027 SRT: Serialization / Deserialization failed in ABAP Proxy
[英]Ignore closing tag in tt:group standard deserialization
根據文檔:
Only one deserialization-relevant case that does not contain a pattern can be specified.
This case is called standard deserialization.
現在的問題是,在另一個標簽中,標准反序列化也將匹配結束標簽。
假設我們有以下 xml:
<X0>
<X1>1</X1>
<X1>2</X1>
<X2>3</X2>
<X2>99</X2>
<X2>4</X2>
<X3>5</X3>
<X4>6</X4>
<X2>888</X2>
</X0>.
現在與ST
<X0>
<tt:group>
<tt:cond frq="*">
<X1>
<tt:value ref="ROOT1"/>
</X1>
</tt:cond>
<tt:cond frq="?">
<X90>
<tt:value ref="ROOT4"/>
</X90>
</tt:cond>
<tt:cond frq="*">
<tt:skip count="1"/>
</tt:cond>
</tt:group>
</X0>
我們將對輸入 XML 進行徹底的迭代,因為 X90 是可選的並且從未找到。 最后一次迭代將包含</X0>
。 這也與默認序列化匹配,並將跳轉到這種情況。 在結束標記上跳過的結果是CX_ST_MATCH
異常。
如何確保只跳過起始標簽?
我不知道<tt:skip.../>
是否有解決方案,但是屬性tt:extensible="on"
有一個替代方案(也可以使用值deep-static
或deep-dynamic
) ,以便“可以跳過未明確指定的元素而無需進一步處理”:
<X0 tt:extensible="on">
<tt:group>
<tt:cond frq="*">
<X1>
<tt:value ref="ROOT1"/>
</X1>
</tt:cond>
<tt:cond frq="?">
<X90>
<tt:value ref="ROOT4"/>
</X90>
</tt:cond>
</tt:group>
</X0>
注意: <X1><tt:value ref="ROOT1"/></X1>
可以簡化為<X1 tt:value-ref="ROOT1"/>
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.