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#
的结果有什么建议吗?
要查询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。