2013-05-17 86 views
0

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

<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是字符串类型的”

到目前为止,我所有的谷歌搜索上如何获得节点类型的值已经显示出比我想要在这里实现的复杂得多的代码示例。任何建议(特别是在演示如何做到这一点的教程),将不胜感激。

回答

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>