gpt4 book ai didi

c# - 对象的 xmlNode

转载 作者:可可西里 更新时间:2023-11-01 08:52:53 30 4
gpt4 key购买 nike

我一直在使用基于 Java 的第 3 方 REST 网络服务,它返回一个 xmlNode 数组。

xmlNode[] 代表一个对象,我正在尝试找出反序列化对象中的 xmlNode[] 的最佳方法?是不是先建立一个xmlDocument再反序列化?

谢谢

最佳答案

如果您安装了 WCF Rest Starter Kit 预览版,则有一个巧妙的技巧:

  • 打开 Visual Studio
  • 选择您的 XML 节点内容(构成您的节点之一的 XML)并将其复制到剪贴板
  • 从 Visual Studio 的“编辑”菜单中,选择“将 XML 粘贴为类型”

这会将剪贴板上的 XML 作为能够反序列化该 XML 的 C# 类粘贴到您的项目中。非常漂亮!

查看有关它的这些博客文章:

这应该可以节省您大量的打字时间,让生活变得更轻松!

更新:
好的,您已经从返回的 XML 中生成了类。现在您需要将 XmlNode 转换为您的类。

你必须做这样的事情:

private static T ConvertNode<T>(XmlNode node) where T: class
{
MemoryStream stm = new MemoryStream();

StreamWriter stw = new StreamWriter(stm);
stw.Write(node.OuterXml);
stw.Flush();

stm.Position = 0;

XmlSerializer ser = new XmlSerializer(typeof(T));
T result = (ser.Deserialize(stm) as T);

return result;
}

您需要将 XmlNode 的 XML 表示(属性 .OuterXml)写入流(此处为 MemoryStream),然后使用XmlSerializer 从该流中序列化回对象。

您可以使用通用方法并调用

 Customer myCustomer = ConvertNode<Customer>(xmlNode);

或者您甚至可以将该代码转换为 XmlNode 类的扩展方法,这样您就可以编写:

 Customer myCustomer = xmlNode.ConvertNode<Customer>();

马克

关于c# - 对象的 xmlNode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1563473/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com