2016-11-25 75 views
0
<query xmlns="urn:xmpp:dialogueHistory"> 
<dialogueHistory id="4d38f289-9"> 
<MessageID>26164</MessageID> 
<messageText>Fhh</messageText> 
<msgDate>11/25/2016 6:30:39 AM</msgDate> 
<unReadCount>0</unReadCount> 
</dialogueHistory> 
</query> 

得到消息ID的信息,MessageText中得到XML節點信息

我如何使用agsxmpp庫得到上面的XML信息

命名空間是agsXMPP.Xml.Dom

回答

0

您需要指定命名空間。使用xml linq

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Xml; 
using System.Xml.Linq; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     const string FILENAME = @"c:\temp\test.xml"; 
     static void Main(string[] args) 
     { 
      XDocument doc = XDocument.Load(FILENAME); 

      List<XElement> dialogueHistory = doc.Descendants().Where(x => x.Name.LocalName == "dialogueHistory").ToList(); 
      XNamespace ns = dialogueHistory.FirstOrDefault().GetDefaultNamespace(); 

      var results = dialogueHistory.Select(x => new { 
       id = (string)x.Attribute("id"), 
       messageId = (int)x.Element(ns + "MessageID"), 
       messageText = (string)x.Element(ns + "messageText"), 
       messageDate = (DateTime)x.Element(ns + "msgDate"), 
       unReadCount = (int)x.Element(ns + "unReadCount") 
      }).ToList(); 

     } 
    } 
}