簡體   English   中英

如何在C#中解析XML

[英]How to Parse XML in C#

我設法讀取硬盤上已保存的.csv文件,並獲取數據以填充數據表。 我現在想獲取該數據並將其轉換為XML格式,然后將XML發送到Web服務。 我怎樣才能做到這一點?

謝謝你的時間。

一種選擇是使用WCF(或ASP.NET Web服務,取決於所使用的.NET版本)連接到Web服務。 然后,您可以輕松填充框架為您創建的代理類並調用服務。

第二種選擇是使用XmlTextWriter並使用它在MemoryStream構建XML文檔。 一旦將XML文檔內置在內存中,就可以刷新文檔並將其發送到Web服務。

第三種選擇是使用LINQ to XML即時構建XML文檔。 與使用XmlTextWriter相比,根據您將CSV文件解析為的結構可能更容易/更難。

也可以使用以下代碼。

public static List<Student> convertXMLtoList(string filePath)
{
XDocument doc = XDocument.Load(filePath);
List<Student> studentsMarks = doc.Descendants("Student").Select(x => new Student()
{
RollNo = int.Parse(x.Element("roll_no").Value),
Name = x.Element("name").Value,
}).ToList();
return studentsMarks;
} 

XML看起來像什么

<?xml version="1.0" encoding="utf-8"?>
 <Students>
  <Student>
  <roll_no>1</roll_no>
  <name>XYZ</name>
 </Student>
...
</Students>

您可以在http://bit.ly/1eveLz3上找到更多詳細信息。 您也可以在這篇文章中找到CSV到XML的信息。

XLinq非常適合將數據放入XML。 如果您可以使用最新的.NET框架,則強烈建議您使用。

有一些信息可以從此處開始(例如) http://www.c-sharpcorner.com/UploadFile/mahesh/xLinkDoc06202007130827PM/xLinkDoc.aspx

至於將XML發送到Web服務,也許您應該通過使用Visual Studio ServiceReference工具自動生成的客戶端來調用Web服務。

您可能需要也可能不需要發送XML-在許多情況下,服務是基於對象的(即,您不需要XLinq,只要您可以將CSV解析為正確的對象即可。)

/編輯:

使用WCF調用Web服務的粗略示例:

using(var client = new ServiceReference1.ThirdPartyServiceClient())
{
    client.SendSomething("123", "hello");
    string output = client.GetSomething();
    Console.WriteLine(output);
}

我沒有使用數據表來完成此操作,但是它對其他對象很有用。

嘗試這樣的事情:

       public void writeToXML(DataTable inputData, string fileName) {
        XmlSerializer xml = new XmlSerializer(typeof(DataTable));
        StreamWriter sw = new StreamWriter(fileName);
        xml.Serialize(sw, inputData);
        sw.Close();
   }

編輯:剛注意到您需要將其傳遞到Web服務。 因此,代替StreamWriter,而使用內存流...但是相同的想法。

根據所需解決方案的穩定性,有不同的選擇。 假設您要遵循最快的路線,應該查看XmlWriter 使用XmlWriter,您可以快速生成XML文檔,保存為字符串,然后傳遞到Web服務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM