如何在C中通过LINQ获取xml中元素的属性名#

如何在C中通过LINQ获取xml中元素的属性名#,linq,Linq,我有一个xml元素: 我想得到SECTION元素的所有属性名。作为ID、名称、控件类型,在服务器端使用LINQ到C#语言中的XML进行链接。我必须在那里写什么查询?由于每个标记名前面都有,因此您的XML看起来有点格式错误;因此,我通过删除来清理XML代码,并基于以下XML代码制定了解决方案: <SECTIONS> <SECTION ID ="1" NAME="System Health" CONTROL-TYPE="Button" LINK="http://ww

我有一个xml元素:


我想得到SECTION元素的所有属性名。作为ID、名称、控件类型,在服务器端使用LINQ到C#语言中的XML进行链接。我必须在那里写什么查询?

由于每个标记名前面都有
,因此您的XML看起来有点格式错误;因此,我通过删除
来清理XML代码,并基于以下XML代码制定了解决方案:

<SECTIONS> 
    <SECTION ID ="1" NAME="System Health" CONTROL-TYPE="Button" LINK="http://www.google.co.in/">
        <DATAITEMS> </DATAITEMS> 
    </SECTION> 
</SECTIONS>
(旁注:您也可以通过如下定义
doc
变量,直接从文件(例如
file.XML
)加载XML代码:

XDocument doc = XDocument.Load(@"C:\Path\To\file.xml");
)

以下代码将打印每个属性的值:

foreach (var elem in query)
            System.Console.WriteLine(string.Format("{0}, {1}, {2}, {3}", elem.Id, elem.Name, elem.ControlType, elem.Link));
控制台输出:

1, System Health, Button, http://www.google.co.in/

正如@Giu提到的,您的XML在技术上是错误的。在每个元素名称之前

要获取
部分中可用的属性名称,请执行以下操作:

string xmlData = "<SECTIONS> <SECTION ID =\"1\" NAME=\"System Health\" CONTROL-TYPE=\"Button\" LINK=\"http://www.google.co.in/\"> <DATAITEMS> </DATAITEMS> </SECTION> </SECTIONS>";
XDocument doc = XDocument.Parse( xmlData );
//The above line could also be XDocument.Load( fileName ) if you wanted a file

IEnumerable<string> strings = doc.Descendants("SECTIONS")
                                 .Descendants("SECTION")
                                 .Attributes()
                                 .Select( a => a.Name.LocalName );
string xmlData=”“;
XDocument doc=XDocument.Parse(xmlData);
//如果需要文件,上面的行也可以是XDocument.Load(fileName)
IEnumerable strings=文档子体(“节”)
.继承人(“节”)
.Attributes()
.Select(a=>a.Name.LocalName);
这将为您提供一个包含ID、名称、控件类型和链接的可枚举项


但是,如果您想要其中包含的值,我会使用@Giu的答案。

oh。。那个点是我明确给出的。因为此页面无法呈现随附的内容,您可以在使用LINQ查询XML之前使用正则表达式删除点,如下所示(不接触原始XML代码):
string XML=Regex.Replace(“,”不,不,不,不,不获取我…此论坛页面不支持随附内容
string xmlData = "<SECTIONS> <SECTION ID =\"1\" NAME=\"System Health\" CONTROL-TYPE=\"Button\" LINK=\"http://www.google.co.in/\"> <DATAITEMS> </DATAITEMS> </SECTION> </SECTIONS>";
XDocument doc = XDocument.Parse( xmlData );
//The above line could also be XDocument.Load( fileName ) if you wanted a file

IEnumerable<string> strings = doc.Descendants("SECTIONS")
                                 .Descendants("SECTION")
                                 .Attributes()
                                 .Select( a => a.Name.LocalName );