从对象序列化到XML节点

时间:2019-02-25 19:53:41

标签: c# web-services

我有2个Web服务。一个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文件...

1 个答案:

答案 0 :(得分:0)

我终于发现以下代码完全符合我的期望:

    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;
    }