如何获取XML文档中节点值的类型

时间:2013-05-17 16:23:51

标签: xml xsd

我有一个使用DataSet的WriteXml()方法生成的xml文档。我还使用了XmlWriteMode.WriteSchema选项。我打开了生成的文件,发现生成的模式信息提供了一个子节点列表以及与之关联的值的后续类型。例如:

<xs:sequence>
   <xs:element name="studentID" type="xs:int" minOccurs="0" />
   <xs:element name="studentRank" type="xs:string" minOccurs="0" />
   <xs:element name="studentLastName" type="xs:string" minOccurs="0" />
   <xs:element name="studentFirstName" type="xs:string" minOccurs="0" />
   <xs:element name="homePlanet" type="xs:string" minOccurs="0" />
   <xs:element name="studentStatus" type="xs:string" minOccurs="0" />
   <xs:element name="TestColumn" type="xs:string" minOccurs="0" />
</xs:sequence>

我正在寻找一种访问“type”属性的简单方法(它是后续值)。例如,我希望能够显示如下内容:

“studentID的类型为int”, “studentRank是字符串类型”

到目前为止,我所有关于如何获取节点价值类型的Google搜索都发现了代码示例,这些代码示例似乎比我在此处尝试实现的要复杂得多。任何建议(特别是关于演示如何做到这一点的教程)都会非常感激。

1 个答案:

答案 0 :(得分:0)

您可以尝试这样的事情,这意味着实际值将进入数据类型的标记内。或者,如果每个字段的数据类型不可更改,那么您可以为每个指示数据类型的元素添加自己的属性。

Variable data type for an element:
<xs:sequence>
   <xs:element name="studentID" type="xs:int" minOccurs="0">
      <xs:complexType>
         <xs:choice>
            <xs:element name="unsignedInteger" type="xs:unsignedInt"/>
            <xs:element name="signedInteger" type="xs:int"/>
            <xs:element name="float" type="xs:float"/>
            <xs:element name="string" type="xs:string"/>
         </xs:choice>
      </xs:complexType>   
   </xs:element>
</xs:sequence>

Fixed data type for an element:
<xs:sequence>
   <xs:element name="studentID" type="xs:int" minOccurs="0">
      <xs:complexType>
         <xs:attribute name="signedInteger" type="xs:string" use="required" fixed="SignedInteger"/>
      </xs:complexType>   
   </xs:element>
</xs:sequence>