我需要创建一个像这样的xml文件:
<AGENDA>
<COVER COLOR>BLACK</COVER COLOR>
<PRICE>24.99</PRICE>
<ENTRIES>
<NAMESURNAME>AAABBB</NAMESURNAME>
<PHONENUMBER>3434534543</PHONENUMBER>
<NAMESURNAME>EEEAAA</NAMESURNAME>
<PHONENUMBER>2342342</PHONENUMBER>
</ENTRIES>
</AGENDA>
即,一个或多个选项和序列中的复杂类型。我需要每个xml文件只有一组选项,而一个或多个条目。
我使用嵌入在VS2010中的xsd文本编辑器,但我不知道如何正确放置选项元素。
如果我输入(在<xsd:schema....>
标记之后):
<xsd:element name="OPTION1" type="xsd:string"/>
<xsd:element name="RawPolling">
<xsd:complexType>
<xsd:sequence maxOccurs="unbounded" minOccurs="0">
<xsd:element name="RawPollingEntry">
<xsd:complexType>
<xsd:sequence maxOccurs="1" minOccurs="0">
<xsd:element name="Nome" type="xsd:string" />
.....
....
我没有在xsd上收到任何错误但是当我编写xml时,我得到“XML文档不能包含多个根级别元素” 我试图在RawPolling中移动OPTION1(但不在RawPollingEntry内部,OPTION1不是复杂/序列类型的一部分,我每个xml文件只需要一个OPTION1)并得到其他错误(“元素......有无效的孩子元件...)
我该如何做到这一点?
答案 0 :(得分:2)
首先,您的XML无效 - 您的名称中不能包含空格,因此:
<COVER COLOR> ..... </COVER COLOR>
开头无效。
下一步 - .NET附带了一个名为xsd.exe
的强大工具。在这种情况下,我使您的XML有效(将标记更改为<COVERCOLOR>
),然后在其上运行xsd.exe - 这将根据XML文件的内容生成XML模式文件。
结果如下:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="newschema" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="AGENDA">
<xs:complexType>
<xs:sequence>
<xs:element name="COVERCOLOR" type="xs:string" minOccurs="0" />
<xs:element name="PRICE" type="xs:string" minOccurs="0" />
<xs:element name="ENTRIES" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="NAMESURNAME" nillable="true" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent msdata:ColumnName="NAMESURNAME_Text" msdata:Ordinal="0">
<xs:extension base="xs:string">
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="PHONENUMBER" nillable="true" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent msdata:ColumnName="PHONENUMBER_Text" msdata:Ordinal="0">
<xs:extension base="xs:string">
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
您应该在类似于此的路径中找到xsd.exe:
C:\Program Files (x86)\Microsoft SDKs\Windows\v6.0A\Bin\
这是在64位Windows 7计算机上 - 在32位上,它将是c:\program files\...
。