Query XSD for value?

本文关键字:value for XSD Query | 更新日期: 2023-09-27 18:06:38

我得到了一个XSD文件,用来填写我生成的XML值,以便提交给web服务。

XSD为包含注释和其他信息的枚举定义值。最好的描述方式是展示一些XSD。

<?xml version="1.0" encoding="utf-16" ?> 
  <xs:schema xmlns="http://MyCompany/Schemas" xmlns:b="http://schemas.microsoft.com/BizTalk   /2003" elementFormDefault="qualified" targetNamespace="http://MyCompany/Schemas" id="NAICSTypes" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:simpleType name="NAICSType">
    <xs:restriction base="xs:int">
      <xs:enumeration value="111110">
        <xs:annotation>
          <xs:appinfo>2007 NAICS Title</xs:appinfo> 
          <xs:documentation xml:lang="en-us">Soybean Farming</xs:documentation> 
        </xs:annotation>
     </xs:enumeration>
     <xs:enumeration value="111120">
       <xs:annotation>
          <xs:appinfo>2007 NAICS Title</xs:appinfo> 
          <xs:documentation xml:lang="en-us">Oilseed (except Soybean) Farming</xs:documentation> 
       </xs:annotation>
     </xs:enumeration>
     <xs:enumeration value="111130">
       <xs:annotation>
          <xs:appinfo>2007 NAICS Title</xs:appinfo> 
          <xs:documentation xml:lang="en-us">Dry Pea and Bean Farming</xs:documentation> 
       </xs:annotation>
     </xs:enumeration>
     <xs:enumeration value="111140">
       <xs:annotation>
         <xs:appinfo>2007 NAICS Title</xs:appinfo> 
         <xs:documentation xml:lang="en-us">Wheat Farming</xs:documentation> 
      </xs:annotation>
     </xs:enumeration>
     <xs:enumeration value="111150">
      <xs:annotation>
         <xs:appinfo>2007 NAICS Title</xs:appinfo> 
         <xs:documentation xml:lang="en-us">Corn Farming</xs:documentation> 
      </xs:annotation>
     </xs:enumeration>

本质上,我需要做的是提供一个值,如111150,并返回"Corn Farming"作为c#

的结果

有什么建议吗?

Query XSD for value?

要查询XML,可以使用SelectNodes或SelectSingleNode。您还需要为查询指定一个名称空间管理器。

像这样:

XmlNamespaceManager nsMgr = new XmlNamespaceManager();
nsMgr.AddNamespace("xs", "http://www.w3.org/2001/XMLSchema");
string value =
    doc.SelectSingleNode("//xs:enumeration[@value='111150']//xs:documentation", nsMgr
    ).InnerText;

我发现这个链接在我使用c#读取xml文件时非常有用。

从XML生成类

您可以使用Visual Studio中的xsd工具来创建将读取特定模式的xml文件的类。它将创建模型类,并且您可以轻松地将所需的数据解析到这些类中。同样,当您从xml文件中创建对象时,读取某些属性和子属性将非常容易。

我应该补充一点,xsd文件本身就是xml文件。您可以将相同的概念应用于读取xsd。