c#如何将对象转换为XML
我是c#和silverlight 5的初学者。我必须澄清silverlight高级开发人员的一个疑虑 我在c#中有一个对象,我必须获取对应于该对象的xml 有人能通过一个例子来解释如何做到这一点吗(任何简单的类及其对象的例子,然后获得xml) 我在google上读过一些文档,他们讨论了一些方法调用c#如何将对象转换为XML,c#,silverlight,serialization,xml-serialization,silverlight-5.0,C#,Silverlight,Serialization,Xml Serialization,Silverlight 5.0,我是c#和silverlight 5的初学者。我必须澄清silverlight高级开发人员的一个疑虑 我在c#中有一个对象,我必须获取对应于该对象的xml 有人能通过一个例子来解释如何做到这一点吗(任何简单的类及其对象的例子,然后获得xml) 我在google上读过一些文档,他们讨论了一些方法调用serialize(),可以这样做。我说得对吗?但是它是如何做到这一点的呢?有人可以通过c#类及其对象和xml来解释吗 这将是一个很大的帮助。 编辑: 我的尝试是: using System; usin
serialize()
,可以这样做。我说得对吗?但是它是如何做到这一点的呢?有人可以通过c#类及其对象和xml来解释吗
这将是一个很大的帮助。
编辑:
我的尝试是:
using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Xml.Serialization;
using System.IO;
using System.Text;
namespace SliderLastTry
{
public static class Xml
{
public static string ToXml(this object objectToSerialize)
{
var mem = new MemoryStream();
var ser = new XmlSerializer(objectToSerialize.GetType());
ser.Serialize(mem, objectToSerialize);
var utf8 = new UTF8Encoding();
return utf8.GetString(mem.ToArray());
}
}
}
下一节课是:
using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
namespace SliderLastTry
{
public class Parameter
{
public string Name {get; set; }
}
}
using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
namespace SliderLastTry
{
public static class ControlClass
{
public static void Main()
{
Parameter pram = new Parameter();
pram.ToXml();
}
}
}
包含类的主要函数是:
using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
namespace SliderLastTry
{
public class Parameter
{
public string Name {get; set; }
}
}
using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
namespace SliderLastTry
{
public static class ControlClass
{
public static void Main()
{
Parameter pram = new Parameter();
pram.ToXml();
}
}
}
得到的误差为:
Error 1 'System.Text.Encoding.GetString(byte[])' is inaccessible due to its protection level
对应于该行/
return utf8.GetString(mem.ToArray()); in Xml class. How toma the solution of it ?
我使用这个类
public static class Xml
{
public static string ToXml(this object objectToSerialize)
{
var mem = new MemoryStream();
var ser = new XmlSerializer(objectToSerialize.GetType());
ser.Serialize(mem, objectToSerialize);
var utf8 = new UTF8Encoding();
return utf8.GetString(mem.GetBuffer(), 0, (int)mem.Length);
}
}
使用此扩展方法,您可以
var xml = your_object.ToXml();
我已经看到了链接,但它们没有显示在类中获得的xml。你能给我一个类的例子,然后用你给那个类对象的逻辑得到这个类的xml吗?Thanks@user234839您可以看到最后一行,我在这里执行
stringxml=writer.ToString()代码>,嗯。。。这就是我们获取序列化程序作为xml编写的字符串的位置。基本上,序列化程序通常写入流
或某种*编写器
(在本例中是文本编写器
)。我使用StringWriter
将数据缓冲到StringBuilder
中,然后通过.ToString()
@user234839获取xml,如果您指的是类的示例和生成的xml:同样,请参见MSDN-这里有示例。查看我发布的公共类MyClass
链接,谢谢你们。让我来实现它,我会回来把它标记为答案。@Marco我已经看到了链接,但是他们没有显示在类中获得的xml。你能给我一个类的例子,然后用你给那个类对象的逻辑得到这个类的xml吗?Thanks@user234839:已经有一个示例可以使用var xml=your_object.Serialize()代码>:)谢谢你们两位。让我来实现它,然后回来将它标记为答案。错误1扩展方法必须在非泛型静态类中定义,并指向var utf8=new UTF8Encoding()行中的“utf8”;错误1“System.Text.Encoding.GetString(byte[])无法访问,因为其保护级别对应于行返回utf8.GetString(mem.ToArray());