0

次のxmlスキーマがあります。

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

入力に基づいてメールアドレスを返す必要があります(プログラムへの入力は部屋番号です)。

LINQ to XML を使用してこれを達成するにはどうすればよいですか?

4

2 に答える 2

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();
于 2013-03-07T09:39:25.023 に答える
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();
于 2013-03-07T09:51:53.880 に答える