使用属性值查找xsd元素

本文关键字:xsd 元素 查找 属性 | 更新日期: 2023-09-27 18:01:51

我怎么能找到complexType元素知道它的名称(站)?我是初学者下面是完整的xsd代码:http://pastebin.com/ymuPDCCb这行不通。

private XElement GetComplexType(string typeName)
{
    XElement complexType = xsdSchema.Elements("complexType")
        .Where(a => a.Attributes("name").FirstOrDefault() != null && a.Attribute("name").Value==typeName)
        .FirstOrDefault();
    return complexType;
}

使用属性值查找xsd元素

您必须包含xs命名空间,并且您需要使用Descendants()而不是Elements()来查询所有级别,如下所示:

private static void ParseXml()
{
    XDocument doc = XDocument.Load(@"C:'schema.xml");
    if (doc != null)
    {
        XElement nodes = GetComplexType("station", doc);
        if (nodes != null)
        {
            Console.WriteLine("station found...");
        }
        else
        {
            Console.WriteLine("station NOT found!!");
        }
    }
}
private static XElement GetComplexType(string typeName, XDocument xsdSchema)
{
    XNamespace ns = "http://www.w3.org/2001/XMLSchema";
    XElement complexType = xsdSchema.Descendants(ns + "complexType")
        .Where(a => a.Attributes("name").FirstOrDefault() != null && a.Attribute("name").Value == typeName)
        .FirstOrDefault();
    return complexType;
}

检查这个SO回答有关元素与后代的更多信息