要从json创建xml架构,我将Json转换为XML,然后使用XmlSchemaInference.InferSchema。生成的Xml架构包含一个选择节点。 以下是从Json发酵的xml
houses[i].ID === peoples[j].HOUSE_ID
下面是使用XmlSchemaInference.InferSchema生成的xmlschema
<RESPONSE_DATA>
<ok>true</ok>
<messages>
<type>message</type>
<subtype>file_share</subtype>
<text>something</text>
<file>
<id>IFD</id>
<created>1468845544</created>
<timestamp>1468845544</timestamp>
</file>
<user>IJSA</user>
<upload>true</upload>
<display_as_bot>false</display_as_bot>
<username><@U1J8V9></username>
<bot_id />
<ts>1468845544.000002</ts>
</messages>
<messages>
<user>U1J98V9</user>
<text>9EK8V9</text>
<type>message</type>
<subtype>group_join</subtype>
<ts>1468472817.000002</ts>
</messages>
<has_more>false</has_more>
</RESPONSE_DATA>
我使用TreeNodeCollection获取schema元素的所有节点,并使用TreeNode.Text获取名称。选择节点的Treenode.Text给我的值为<?xml version="1.0" encoding="utf-16"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://tempuri.org" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="RESPONSE_DATA">
<xs:complexType>
<xs:sequence>
<xs:element name="ok" type="xs:boolean" />
<xs:element maxOccurs="unbounded" name="messages">
<xs:complexType>
<xs:sequence>
<xs:choice maxOccurs="unbounded">
<xs:element name="type" type="xs:string" />
<xs:element name="subtype" type="xs:string" />
<xs:element name="text" type="xs:string" />
<xs:element name="file">
<xs:complexType>
<xs:sequence>
<xs:element name="id" type="xs:string" />
<xs:element name="created" type="xs:unsignedInt" />
<xs:element name="timestamp" type="xs:unsignedInt" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="user" type="xs:string" />
<xs:element name="upload" type="xs:boolean" />
<xs:element name="display_as_bot" type="xs:boolean" />
<xs:element name="username" type="xs:string" />
<xs:element name="bot_id" />
<xs:element name="ts" type="xs:decimal" />
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="has_more" type="xs:boolean" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
而不是<Choice>
,这会破坏我的代码。
答案 0 :(得分:0)
两个messages
元素共享5个常见子元素(type
,subtype
,text
,user
,ts
),但它们是'不一样的顺序。
结果模式基本上表示'这些内容在messages
内是有效的,但顺序并不重要'。