现在的位置: 首页 > 综合 > 正文

[转]Create an XMLSerializer from a given XML string

2011年08月04日 ⁄ 综合 ⁄ 共 1386字 ⁄ 字号 评论关闭

HOWTO: Create an XMLSerializer from a given XML string

Well, I got some great replies on my appearently rookie question..;) .I'll
post them here for others to learn from. that's what it's all about , isn't
it?

The Problem: Given an XML string, create an instance of the
XMLSerializer class, allowing you to construct or serialize an object of a
specific type.

There were two solutions right away. They both seem pretty darn obvious -
once you read them :) thanks folks!


Solution 1: Use a stringBuilder Object to create a
stream

 

By : Jan Tielens

You
can use the StringBuilder to create a stream.

I use it with
CodeDom too, like this:
Private Function GetVBCode(ByVal code As
CodeTypeDeclaration) As String
Dim gen As New VBCodeProvider

Dim sb As New System.Text.StringBuilder
Dim stream As
New IO.StringWriter(sb)

gen.CreateGenerator().GenerateCodeFromType(code, stream,
Nothing)
stream.Close()

Return sb.ToString
End
Function

Solution 2:  Use a MemoryStream Object to translate the string into a
stream, which is needed to intialize the XMLSerializer

 

By Christian Weyer

[...]
string xmlString = @"<?xml version='1.0'
encoding='utf-8'
?><TestType><Number>42</Number><Value>Christian</Value></TestType>";

System.IO.MemoryStream ms = new System.IO.MemoryStream();

System.IO.TextWriter writer = new System.IO.StreamWriter( ms );

writer.Write(xmlString);
writer.Flush();

ms.Seek(0,
System.IO.SeekOrigin.Begin);
XmlSerializer serializer = new
XmlSerializer(typeof(TestType));
TestType tt =
(TestType)serializer.Deserialize(ms);
[...]

public class
TestType
{
public int Number;
public string Value;
}

抱歉!评论已关闭.