【问题标题】:How to get the attribute value of xml using LINQ to XML?如何使用 LINQ to XML 获取 xml 的属性值?
【发布时间】:2013-02-22 10:26:51
【问题描述】:

我有以下 xml 架构。

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

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

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

【问题讨论】:

    标签: c#-4.0 xml-parsing 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");
    

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

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

    【讨论】:

      【解决方案2】:

      试试这个:

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

      【讨论】:

      • 这行不通。我的问题是,如果我输入为“room1”,我必须得到 ssds@dsfd.com,如果 i/p 是“room2”,那么 o/p 应该是“ssds@sdd.com”。提前致谢
      • 谢谢詹斯。我得到了解决方案。
      猜你喜欢
      • 1970-01-01
      • 2013-01-10
      • 1970-01-01
      • 2013-10-27
      • 2013-04-02
      • 2016-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多