来自vb.net datatable的XML文件的XML Schema

时间:2014-06-06 00:25:04

标签: xml vb.net visual-studio-2012 datatable xsd

好的,所以甚至不确定如何问这个问题,但我正在寻找有关如何创建XML模式文件的帮助,以便在将xml文件加载到基于所述模式的数据集时,表中的数据就像我期望的那样。

这是XML数据:

<Cabinet>
   <Name>DANCE</Name>
   <MappedTypes>
      <TypeMapInfo>
         <TypeName>HIP HOP</TypeName>
         <DefaultInstitution />
         <DefaultAuthority>511</DefaultAuthority>
         <DefaultDocumentName />
      </TypeMapInfo>
      <TypeMapInfo>
         <TypeName>JITTERBUG</TypeName>
         <DefaultInstitution />
         <DefaultAuthority>511</DefaultAuthority>
         <DefaultDocumentName />
      </TypeMapInfo>
   </MappedTypes>
</Cabinet>

基本上,我希望它在数据表中显示如下:

Cabinet      | Type Name | DefaultInstitution | DefaultAuthority | DefaultDocumentName
Dance        | HIP HOP   |                    | 511              |                    
Dance        | JITTERBUG |                    | 511              |                      

到目前为止,这就是我所拥有的,但它只加载了橱柜下列出的第一个类型名称:

<xs:element maxOccurs="unbounded" name="Cabinet">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="Name" type="xs:string" />
      <!--<xs:element name="MappedTypes"/>
      <xs:element name="TypeMapInfo"/>-->
      <xs:element  name="TypeName" type="xs:string" />
      <xs:element name="DefaultInstitution" type="xs:string" />
      <xs:element name="DefaultAuthority" type="xs:unsignedShort" />
      <xs:element name="DefaultDocumentName" />
    </xs:sequence>
  </xs:complexType>
</xs:element>

1 个答案:

答案 0 :(得分:1)

如果您希望xml对它有效,则必须更正xsd,可能您的数据表只显示<Name>元素,因为xsd中唯一一个为您定义的元素XML。

以下xsd适合您的xml尝试:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="http://your_namespace" 
           targetNamespace="http://your_namespace" 
           elementFormDefault="qualified" 
           attributeFormDefault="unqualified">

    <xs:element name="Cabinet" maxOccurs="unbounded">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Name" type="xs:string"/>
                <xs:element name="MappedTypes">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="TypeMapInfo" maxOccurs="unbounded" minOccurs="0">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="TypeName" type="xs:string"/>
                                        <xs:element name="DefaultInstitution" type="xs:string"/>
                                        <xs:element name="DefaultAuthority" type="xs:unsignedShort"/>
                                        <xs:element name="DefaultDocumentName" type="xs:string"/>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

编辑:

我回顾你的问题并再次阅读你的评论我意识到你可能正在寻找适合你的XSD的XML而不是适合你的XML的XSD,因为我在第一次尝试时会做出回应。所以,如果你有一个XSD:

<xs:element maxOccurs="unbounded" name="Cabinet">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="Name" type="xs:string" />
      <xs:element  name="TypeName" type="xs:string" />
      <xs:element name="DefaultInstitution" type="xs:string" />
      <xs:element name="DefaultAuthority" type="xs:unsignedShort" />
      <xs:element name="DefaultDocumentName" />
    </xs:sequence>
  </xs:complexType>
</xs:element>

您必须将XML更改为:

<Cabinet>
 <Name>DANCE</Name>
 <TypeName>HIP HOP</TypeName>
 <DefaultInstitution/>
 <DefaultAuthority>511</DefaultAuthority>
 <DefaultDocumentName/>
</Cabinet>
<Cabinet>
 <Name>DANCE</Name>
 <TypeName>JITTERBUG</TypeName>
 <DefaultInstitution/>
 <DefaultAuthority>511</DefaultAuthority>
 <DefaultDocumentName/>
</Cabinet>

希望这有帮助,