将对象转换为XML字符串

时间:2013-12-04 17:34:16

标签: xml string web-services object windows-store-apps

我正在构建一个Windows商店应用程序,我需要将一个对象转换为一个xml字符串,以便通过Web服务发送它,它将被重新组装为PDF。

该对象由2个字符串(名称和ID)和一个包含照片的字节数组组成(捕获到存储文件中,然后我将其转换为字节数组)。

问题是我找不到任何方法将此对象转换为有效的xml字符串。

这是我从谷歌搜索到目前为止所提出的,但我不确定这是否是我需要的:

 Public Shared Function XmlFromObject(ByVal objTemp As Object, ByVal ID As String, ByVal name As String) As Task(of String)
            Dim IDName As String = ID + "_" + name + ".xml"
            Dim objStreamWriter As New StreamWriter(IDName)
            Dim x As New XmlSerializer(objTemp.GetType)
            using objStreamWriter                   
                x.Serialize(objStreamWriter, objTemp)
            end using
            Return IDName
End Function

有人可以帮忙吗?提前谢谢!

1 个答案:

答案 0 :(得分:1)

我用过这个可能会帮助你序列化你的对象:

我希望C#也适合你。

C#扩展方法:

    public static string SerializeXml(this object instance)
    {
        using (var stream = new MemoryStream())
        {
            var serializer = new DataContractSerializer(instance.GetType());
            serializer.WriteObject(stream, instance);
            stream.Position = 0;
            using (var reader = new StreamReader(stream))
            {
                var result = "<?xml version='1.0' encoding='UTF-8' ?>";
                result += reader.ReadToEnd();
                return result;
            }
        }
    }

您的对象:

class Dto
{
    public string Id{ get; set; }
    public string Name{ get; set; }
    public byte[] Data { get;set; }
}

<强>用法

var instance = new Dto();
instance.Id = "1";
instance.Name = "Any Name";
instance.Data = new byte[128];

var objAsString = instance.SerializeXml();

这是您要搜索的内容吗?