How to get the attribute value of xml using LINQ to XML?

别等时光非礼了梦想. 提交于 2019-12-11 16:53:42

问题


I have the following xml schema.

<Rooms>
    <Room RoomNumber="room1" EMAIL="ssds@dsfd.com" dsfdd=""/>
    <Room RoomNumber="room2" EMAIL="ssds@sdd.com" dsfdd=""/>
</Rooms>

I have to return Email address based on the input(input to program is room number).

How i can achieve this using LINQ to XML?


回答1:


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");

Then, with a query like that you can get results:

// if there is always only one <Room> with given roomNumber
var email = emailQuery.First();
// otherwise
var emails = emailQuery.ToList();



回答2:


Try this:

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();


来源:https://stackoverflow.com/questions/15267530/how-to-get-the-attribute-value-of-xml-using-linq-to-xml

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!