[英]XML schema for ordered child elements with different names
我需要反序列化XML,該XML包含點和弧的輪廓/多邊形的定義。
<Pt>
<X>0.0</X>
<Y>0.0</Y>
</Pt>
<Arc>
<X>0.0</X>
<Y>0.0</Y>
<Rad>0.0</Rad>
</Arc>
實際的XML文件:
<Profile>
<Pt>...</Pt>
<Pt>...</Pt>
<Arc>...</Arc>
<Pt>...</Pt>
<Arc>...</Arc>
</Profile>
我有點想找到一種解決方案來知道具有不同名稱的子元素的順序。 我目前正在使用一種類似於以下代碼的架構,但是顯然我在不知道Pts和Arcs順序的情況下得到了Pts和Arcs的單個數組。 我嘗試創建一個同時包含Pt和Arc的替換組(點),但未成功。
<xs:element name="Profile">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Pt">
<xs:complexType>
<xs:sequence>
<xs:element name="X" type="xs:decimal" />
<xs:element name="Z" type="xs:decimal" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element maxOccurs="unbounded" name="Arc">
<xs:complexType>
<xs:sequence>
<xs:element name="X" type="xs:decimal" />
<xs:element name="Z" type="xs:decimal" />
<xs:element name="Rad" type="xs:decimal" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
我想您想允許Pt
和Arc
元素的任意順序。 以下模式將通過在sequence
聲明中設置maxOccurs="unbounded"
來解決問題。 您還必須更正Pt
和Arc
聲明,因為當前它們使用的是Z
而不是數據中的Y
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="pt-type">
<xs:sequence>
<xs:element name="X" type="xs:decimal" />
<xs:element name="Y" type="xs:decimal" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="arc-type">
<xs:sequence>
<xs:element name="X" type="xs:decimal" />
<xs:element name="Y" type="xs:decimal" />
<xs:element name="Rad" type="xs:decimal" />
</xs:sequence>
</xs:complexType>
<xs:element name="Profile">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:choice >
<xs:element name="Pt" type="pt-type"/>
<xs:element name="Arc" type="arc-type"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.