首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用LINQ to XML获取xml的属性值?

如何使用LINQ to XML获取xml的属性值?
EN

Stack Overflow用户
提问于 2013-03-07 17:32:57
回答 2查看 6.8K关注 0票数 0

我有以下xml模式。

代码语言:javascript
复制
<Rooms>
    <Room RoomNumber="room1" EMAIL="ssds@dsfd.com" dsfdd=""/>
    <Room RoomNumber="room2" EMAIL="ssds@sdd.com" dsfdd=""/>
</Rooms>

我必须返回基于输入的电子邮件地址(程序的输入是房间号)。

如何使用LINQ to XML实现这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-07 17:51:54

代码语言:javascript
复制
var doc = XDocument.Load(myXmlFilePath);
// or doc = XDocument.Parse(myXmlString);

string roomNumber = "room1";

var emailQuery = from room in doc.Root.Elements("Room")
                 where (string)room.Attribute("RoomNumber") == roomNumber
                 select (string)room.Attribute("EMAIL");

然后,通过这样的查询,您可以获得结果:

代码语言:javascript
复制
// if there is always only one <Room> with given roomNumber
var email = emailQuery.First();
// otherwise
var emails = emailQuery.ToList();
票数 1
EN

Stack Overflow用户

发布于 2013-03-07 17:39:25

试试这个:

代码语言:javascript
复制
var xml = XElement.Parse("<Rooms>"+
                "<Room RoomNumber=\"room1\" EMAIL=\"ssds@dsfd.com\" dsfdd=\"\"/>"+
        "<Room RoomNumber=\"room2\" EMAIL=\"ssds@sdd.com\" dsfdd=\"\"/>"+
                 "</Rooms>");

string room = "room1"; //input
var email =   xml.Elements("Room")
                        .Where(c => c.Attribute("RoomNumber").Value == room)
                        .Select(c => c.Attribute("EMAIL").Value).FirstOrDefault();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15267530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档