我想将 XML 从客户端传输到使用FTP
. 我得到的是XmlElement
对象。我知道我可以创建File
并将其上传到适当的位置 (FTP)。
但是,我认为最好File
在内存中创建(以避免将文件保存在本地磁盘上)。
有人可以指导我如何实现这一目标吗?
我正在使用 C# 4.0。
我想将 XML 从客户端传输到使用FTP
. 我得到的是XmlElement
对象。我知道我可以创建File
并将其上传到适当的位置 (FTP)。
但是,我认为最好File
在内存中创建(以避免将文件保存在本地磁盘上)。
有人可以指导我如何实现这一目标吗?
我正在使用 C# 4.0。
您可以使用FtpWebRequest.GetRequestStream()直接写入请求流,而无需先将文件保存在磁盘上
检索用于将数据上传到 FTP 服务器的流。
XmlElement.OuterXml返回 XmlElement 的字符串表示形式。
string xml = myXmlElement.OuterXml;
byte[] bytes = Encoding.UTF8.GetBytes(xml);
Stream requestStream = request.GetRequestStream();
requestStream.Write(bytes, 0, bytes.Length);
requestStream.Close();
Ling2Xml 更易于使用:
stream = ftpRequest.GetRequestStream();
XElement xDoc = new XElement("Root",
new XElement("Item1", "some text"),
new XElement("Item2", new XAttribute("id", 666))
);
xDoc.Save(stream);
或者你可以使用serialization
XmlSerializer ser = new XmlSerializer(typeof(SomeItem));
ser.Serialize(stream, new SomeItem());
public class SomeItem
{
public string Name;
public int ID;
}
@LB 给出了使用提示XDocument
,它解决了我的问题。
这是解决方案:
编写代码以XDocument
从对象中创建XmlElement
对象。
StringBuilder stringBuilder = new StringBuilder();
XmlWriter xmlWriter = new XmlTextWriter(new StringWriter(stringBuilder));
xmlElement.WriteTo(xmlWriter);
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load(new StringReader(stringBuilder.ToString()));
XDocument doc = XDocument.Load(xmlDocument.CreateNavigator().ReadSubtree(), LoadOptions.PreserveWhitespace);
然后像这样使用FTP的流。
Stream ftpstream = ((FtpWebRequest)WebRequest.Create(path)).GetRequestStream();
doc.Save(ftpstream);
ftpstream.Close();