繁体   English   中英

vb.net数据表的XML文件中的XML模式

[英]XML Schema from XML file for vb.net datatable

好的,所以甚至不确定如何问这个问题,但是我正在寻求有关如何创建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>

如果您希望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>

希望这可以帮助,

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM