首页 > 解决方案 > 从对象序列化到 XML 节点

问题描述

我有 2 个网络服务。一个 Web 服务接受 A 类型的对象。在 Visual Studio 中使用“添加服务引用”时,它会创建一个名为AType.

我的第二个 Web 服务的输入法(称为 x(...))实际上接受了 A 类型的参数,但由于某种原因 WSDL 不正确并将其声明为 ##any。

<any namespace="##any" processContents="lax" minOccurs="1" maxOccurs="1">

这意味着在我的代码中,我必须从 XmlDocument 创建一个 XmlElement:

private static XmlDocument doc = new XmlDocument();
XmlElement e = doc.CreateElement("some-name", "some-uri");

有没有办法可以将 AType 转换为 XmlElement?我必须先回到字符串吗?

作为替代方案,我正在考虑合并我的两个 Web 服务 WSDL 文件......

标签: c#web-services

解决方案


我终于发现以下代码完全符合我的要求:

    public static XmlElement Serialize(MyObject someClassInstance)
    {            
        XmlSerializer serializer = new XmlSerializer(typeof(MyObject));
        XmlDocument doc = new XmlDocument();

        XPathNavigator nav = doc.CreateNavigator();
        XmlWriter writer = nav.AppendChild();
        serializer.Serialize(writer, someClassInstance);
        writer.WriteEndDocument();
        writer.Flush();
        writer.Close();
        return doc.DocumentElement;
    }

推荐阅读