当前位置:  开发笔记 > 编程语言 > 正文

在.NET(C#)Web服务中原生地返回XML?

如何解决《在.NET(C#)Web服务中原生地返回XML?》经验,为你挑选了2个好方法。

我意识到.NET中的SOAP webservices返回web方法返回的任何对象的XML表示,但是如果我想在XML中返回数据格式,那么存储它的最佳对象是什么?

我正在使用这个问题的答案来编写我的XML,这里是代码:

XmlWriter writer = XmlWriter.Create(pathToOutput);
writer.WriteStartDocument();
writer.WriteStartElement("People");

writer.WriteStartElement("Person");
writer.WriteAttributeString("Name", "Nick");
writer.WriteEndElement();

writer.WriteStartElement("Person");
writer.WriteStartAttribute("Name");
writer.WriteValue("Nick");
writer.WriteEndAttribute();
writer.WriteEndElement();

writer.WriteEndElement();
writer.WriteEndDocument();

writer.Flush();

现在我可以将此输出作为String返回到我的调用webmethod,但它显示为 XML HERE ,无论如何只返回完整的xml?

请在您的答案中,举例说明如何将所述对象与XmlWriter或其他内部对象一起使用(如果您认为XmlWriter是一个糟糕的选择).System.Xml包(命名空间)有很多对象,但我无法找到关于如何一起使用对象或在什么情况下使用什么的体面文档.



1> James McMaho..:

这就是我最终做到的方式;

StringBuilder sb = new StringBuilder();
XmlWriter writer = XmlWriter.Create(sb, settings);

writer.WriteStartDocument();
writer.WriteStartElement("People");

writer.WriteStartElement("Person");
writer.WriteAttributeString("Name", "Nick");
writer.WriteEndElement();

writer.WriteStartElement("Person");
writer.WriteStartAttribute("Name");
writer.WriteValue("Nick");
writer.WriteEndAttribute();
writer.WriteEndElement();

writer.WriteEndElement();
writer.WriteEndDocument();

writer.Flush();

XmlDocument xmlDocument = new XmlDocument();
xmlDocument.LoadXml(sb.ToString());
return xmlDocument;

可能不是最好的方法,但似乎有效.如果您有更好的方法,请告诉我.谢谢.


...无论如何,XmlDocument都是从XmlNode派生的,所以在使用XPath查询xml或创建XPathNavigators等功能方面没有太多困难.

2> Kev..:

只需返回一个XmlDocument.例如

[WebMethod]
public XmlDocument Quux()
{

}

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有