Search code examples
c#.netxmllinq-to-xmlxmldocument

Getting attributes from XML using c#


I have the following xml contents inside a string variable. i want to get the value of each attribute (JID) in the form of string.

Below is my xml

  <query xmlns="http://jabber.org/protocol/muc#admin">
  <item affiliation="member" jid="a@something.com" />
  <item affiliation="member" jid="b@something.com" />
  <item affiliation="member" jid="c@something.com" />
  <item affiliation="member" jid="d@something.com" />
  <item affiliation="member" jid="e@something.com" />
  <item affiliation="member" jid="f@something.com" />
  <item affiliation="member" jid="g@something.com" />
  <item affiliation="member" jid="h@something.com" />
  <item affiliation="member" jid="i@something.com" />
  <item affiliation="member" jid="j@something.com" />
  </query>

Anyone please suggest some ideas to find this. my expected output is like

   a@something.com
   b@something.com
   c@something.com
   d@something.com
   e@something.com
   f@something.com

Solution

  • To achieve the required output you can use XMLDocument , XMLNode and XMLNodeList as follows

    string sb = "<query xmlns=\"http://jabber.org/protocol/muc#admin\">" +
                             "  <item affiliation=\"member\" jid=\"a@something.com\" />" +
                             "  <item affiliation=\"member\" jid=\"b@something.com\" />" +
                             "  <item affiliation=\"member\" jid=\"c@something.com\" />" +
                             "  <item affiliation=\"member\" jid=\"d@something.com\" />" +
                             "  <item affiliation=\"member\" jid=\"e@something.com\" />" +
                             "  <item affiliation=\"member\" jid=\"f@something.com\" />" +
                             "  <item affiliation=\"member\" jid=\"g@something.com\" />" +
                             "  <item affiliation=\"member\" jid=\"h@something.com\" />" +
                             "  <item affiliation=\"member\" jid=\"i@something.com\" />" +
                             "  <item affiliation=\"member\" jid=\"j@something.com\" />" +
                             "  </query>";
    
                XmlDocument doc = new XmlDocument();
                doc.LoadXml(sb);
    
                XmlNodeList allXmlNode = doc.GetElementsByTagName("item");
                if (allXmlNode.Count >= 1)
                {
                    foreach (XmlNode node in allXmlNode)
                    {
                        System.Console.WriteLine(node.Attributes[1].InnerText);
                    }
                }