如何解析C#中的XML
我已经设法读取硬盘上保存的.csv文件,并获取数据以弹出数据表。我现在想要将这些数据放入XML格式,然后将XML发送到Web服务。我怎样才能做到这一点?如何解析C#中的XML
谢谢你的时间。
XLinq非常适合将数据放入XML中。如果你可以使用最新的.NET框架,我强烈推荐它。
有一些信息上手这里(例如) http://www.c-sharpcorner.com/UploadFile/mahesh/xLinkDoc06202007130827PM/xLinkDoc.aspx
至于用于发送XML的Web服务,也许你应该调用通过使用Visual Studio服务引用自动生成客户端的Web服务工具。
您可能会或可能不会需要发送XML到 - 在许多情况下,服务是基于对象的
(即你不需要XLINQ,只要你能解析CSV到正确的对象。) /编辑:
使用WCF调用web服务粗糙例如:
using(var client = new ServiceReference1.ThirdPartyServiceClient())
{
client.SendSomething("123", "hello");
string output = client.GetSomething();
Console.WriteLine(output);
}
感谢您的答复,就我已经到位的方面而言 - 我已经使用过服务参考工具,我已经创建了一个web服务的web引用,这个引用已经存在,并创建了一个客户端应用程序来使用服务。我正在处理一家公司向我发送了一些文件,如终端,.wsdl和.xsd文件。我将以csv的形式获取他们的数据。所以我更喜欢这样的印象,我必须将数据解析到xml模板中,然后使用soap发送它。你认为做这件事的最好方法是什么?谢谢你的时间。 – Ebikeneser 2010-11-16 14:16:37
他们的csv数据是否来自Web服务?如果您使用的是WCF客户端(来自ServiceReference),则不必直接使用SOAP。但是你必须在请求中放入什么取决于它们的实现。许多Web服务调用就像GetObjects(ObjectQuery查询),AddObject(Object对象) – CJBrew 2010-11-16 14:19:26
没有不幸的是,csv文件来自第三方,需要转换成XML,发送到Web服务,所有我必须担心的是越来越来自Web服务的响应,例如该文件已被接受或错误消息。我有一个示例xml发送文件,但不完全确定我将如何使用这在我的客户端应用程序发送? – Ebikeneser 2010-11-16 14:23:21
一种选择是使用WCF(或ASP.NET Web服务,取决于您使用的是哪个.NET版本)连接到Web服务。然后,您可以轻松填充框架为您创建的代理类并调用该服务。
第二个选择是使用XmlTextWriter
并使用它在MemoryStream
中构建XML文档。一旦你在内存中建立了XML文档,你可以刷新文档并将其发送到Web服务。
第三种选择是使用LINQ to XML即时生成XML文档。根据结构的不同,您使用XmlTextWriter解析CSV文件可能会更容易/更困难。
我强烈建议通过XmlTextWriter使用XLinq,它合成起来要简单得多。 – Guy 2010-11-16 13:58:44
我还没有一个DataTable做到了这一点,但它为其他对象工作的伟大。
尝试这样:
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,使用一个内存流......但同样的想法。
以下代码也可以使用。
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。
你已经试过了什么?你使用的是什么版本的框架? – 2010-11-16 13:54:40
那么,你想写XML还是读XML? – 2010-11-16 13:55:59
我应该说我正在使用Visual Studio做到这一点,并使用框架4.我不知道如何将数据转换为XML格式。我研究过它,并认为LINQ是做到这一点的方式,但不完全确定? – Ebikeneser 2010-11-16 14:01:08