我得到了一个 XSD 文件和示例 XML 文件,并被要求将 XML 文件发布到一个 URL。
示例 XML 文件
<?xml version="1.0"?>
<pingRequest>
<elt></elt>
...
</pingRequest>
我熟悉SOAP和REST,但是我从来没有做过直接发布纯XML文件。这是我到目前为止得到的结果。
1) 从XSD文件生成C#类
xsd.exe Test.xsd /c
2) 使用 XmlSerializer 将 C# 类序列化为 XML
public string SerializeObject(object obj, Type type)
{
string xml;
var xs = new XmlSerializer(type);
using (var ms = new MemoryStream())
{
xs.Serialize(ms, obj, null);
ms.Position = 0;
using (var sr = new StreamReader(memoryStream))
{
xml = sr.ReadToEnd();
}
}
return xml;
}
或者我应该使用 LINQ to XML生成 XML 文件?
3) 使用 WebClient 将 XML 发送到 URL
var client = new WebClient();
var uri = new Uri("http://www.site.com/");
string responseXML = client.UploadString(uri, requestXML);
我在正确的轨道上吗?如果没有,你能给我指出正确的方向吗?提前致谢。
最佳答案
这是我的部分代码,以便其他人可以使用它。
首先,使用 xsd.exe Test.xsd/c
创建了两个基于 XML 标签的类(用于请求和响应),这样我就不必手动修改 XML 文件了。
public pingResponse Send()
{
var pingRequest = new pingRequest
{
myelement = "test"
};
// Serialize pingRequest class to xml
var serializer = new Serializer();
string requestXml = serializer.SerializeObject(pingRequest, typeof(pingRequest));
// Post xml
var client = new WebClient();
var uri = new Uri("http://www.site.com/");
string responseXML = client.UploadString(uri, requestXML);
return (pingResponse)serializer.DeserializeObject(xml, typeof(Response));
}
public class Serializer
{
public string SerializeObject(object obj, Type type)
{
var setting = new XmlWriterSettings() {OmitXmlDeclaration = true, Indent = true};
var xml = new StringBuilder();
using (var writer = XmlWriter.Create(xml, setting))
{
var nsSerializer = new XmlSerializerNamespaces();
nsSerializer.Add(string.Empty, string.Empty);
var xmlSerializer = new XmlSerializer(type);
xmlSerializer.Serialize(writer, obj, nsSerializer);
}
return xml.ToString();
}
public object DeserializeObject(string xml, Type type)
{
var xs = new XmlSerializer(type);
var stringReader = new StringReader(xml);
var obj = xs.Deserialize(stringReader);
stringReader.Close();
return obj;
}
}
注意:我不包括 PingRequest 和 PingResponse 类,因为我的成员变量将与您的不同。
关于c# - 使用 XSD 创建 XML 并发布到 URL 的步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12170960/