我怎样才能找到知道它名称(station)的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;
}
答案 0 :(得分:0)
您必须包含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;
}
检查this SO答案,了解有关Elements vs Descendants
的更多信息