2012-09-29 125 views
-1

我有一个提供XML数据的链接。我想在我的应用程序中处理数据。通过C#读取XML

如何在C#中处理这个问题?

通过的XmlReader或做我需要下载XML数据

哪一个是最佳的方法是什么?

+5

** ** System.Linq.Xml命名空间包含良好的图书馆阅读和 – user1406062

+0

你说你从某种饲料接收XML数据处理个XML。也许你可以指定你想要JSON呢? JSON与Xml几乎相同,但我发现JSON更容易/更有趣。许多Web服务都可以使用Xml和JSON进行回复。 –

回答

3

你可以从你的链接像这样得到的XML文档

using (WebClient wc = new WebClient()) 
    {    
     string xml = wc.DownloadString(url); 

     XmlDocument xmlDoc = new XmlDocument(); 
     xmlDoc.LoadXml(xml); 

    } 

不,你可以使用System.Xml.Linq解析xmlDoc中

// Create the query 
var custs = from c in xmlDoc.Elements("Customers") 
      select c ; 

// Execute the query 
foreach (var customer in custs) 
{ 
    Console.WriteLine(customer); 
} 
+0

谢谢。它的工作。 – Shan

0

我使用XDocument,因为它可以非常简单地查询Linq风格的xml。 除非你有特殊的需求或限制,我认为这是最方便的。

0

先下载xml文件中的数据,然后 您可以使用此代码对XML阅读

XmlTextReader xmlreader = new XmlTextReader(Server.MapPath("filename.xml")); 
DataSet ds = new DataSet(); 
ds.ReadXml(xmlreader); 
DataTable dt = new DataTable(); 
dt = (DataTable)ds.Tables[0]; 

我希望这将有助于你

0

使用XmlSerializer进行反序列化您收到回对象图中的字符串:

public T Deserialize<T>(string xml) 
{ 
    T deserialized; 
    XmlSerializer xmlSerializer= new XmlSerializer(typeof(T)); 
    using (StringReader stringReader = new StringReader(xml)) 
    { 
     var xmlReaderSettings = new XmlReaderSettings(); // 
     using (XmlReader xmlReader = XmlReader.Create(stringReader, xmlReaderSettings)) 
     { 
      xmlReader.MoveToContent(); 
      deserialized = (T)xmlSerializer.Deserialize(xmlReader); 
     } 
    } 
    return deserialized; 
}