如何在没有相应属性名称的情况下检索XML属性的值?

时间:2017-10-13 03:02:51

标签: c# xml linq-to-xml

我正在使用XDocument和C#。

我有以下XML数据,我想从中提取id(c5946,cdb9fb等):

<rootElement>
    <IDs>
       <ID value="c5946"/>
       <ID value="cdb9fb"/>
       <ID value="c677f5"/>
       <ID value="ccc78b"/>
   </IDs>
</rootElement>

我尝试了不同的东西,其中包括:

XDocument xDoc = XDocument.Load(filename);
var Ids = xDoc.Root.Element("IDs").Elements("ID").Attributes("value");

但是这会回来:

 value="c5946", value="cdb9fb", etc.

而不是

c5946, cdb9fb, etc.

如何获取没有相应属性名称的属性值?

1 个答案:

答案 0 :(得分:2)

使用属性

.Value属性
var allId = document.Descendants("ID").Select(id => id.Attribute("value").Value);

或者您可以将XAttribute投射到string

var allId = document.Descendants("ID").Select(id => (string)id.Attribute("value"));

如果元素中不存在属性,则转换将更简单。

var allId = document.Descendants("ID").Select(id => (string)id.Attribute("value") ?? "");