xml序列化源码
1. 你好,带属性的XML序列化的方法要怎么写怎么去识别 [XmlText]
(Streamstream,objecto,Encodingencoding)
{
if(o==null)
thrownewArgumentNullException("o");
if(encoding==null)
thrownewArgumentNullException("encoding");
XmlSerializerserializer=newXmlSerializer(o.GetType());
XmlWriterSettingssettings=newXmlWriterSettings();
settings.Indent=true;
settings.NewLineChars=" ";
settings.Encoding=encoding;
settings.IndentChars="";
using(XmlWriterwriter=XmlWriter.Create(stream,settings))
{
serializer.Serialize(writer,o);
writer.Close();
}
}
///<summary>
///将一个对象序列化为XML字符串
///</summary>
///<paramname="o">要序列化的对象</param>
///<paramname="encoding">编码方式</param>
///<returns>序列化产生的XML字符串</returns>
(objecto,Encodingencoding)
{
using(MemoryStreamstream=newMemoryStream())
{
XmlSerializeInternal(stream,o,encoding);
stream.Position=0;
using(StreamReaderreader=newStreamReader(stream,encoding))
{
returnreader.ReadToEnd();
}
}
}
///<summary>
///从XML字符串中反序列化对象
///</summary>
///<typeparamname="T">结果对象类型</typeparam>
///<paramname="s">包含对象的XML字符串</param>
///<paramname="encoding">编码方式</param>
///<returns>反序列化得到的对象</returns>
publicstaticTXmlDeserialize<T>(strings,Encodingencoding)
{
if(string.IsNullOrEmpty(s))
thrownewArgumentNullException("s");
if(encoding==null)
thrownewArgumentNullException("encoding");
XmlSerializermySerializer=newXmlSerializer(typeof(T));
using(MemoryStreamms=newMemoryStream(encoding.GetBytes(s)))
{
using(StreamReadersr=newStreamReader(ms,encoding))
{
return(T)mySerializer.Deserialize(sr);
}
}
}
这是帮助类的代码
2. 求 一个 xml反序列化的源代码,xml为3层机构,即节点下有很多元素,元素又有属性。
xml反序列化是指转换成业务对象么?如果是,你业务对象是什么样的啊?然后要的是专门正对这个xml的代码吧?
<Root>
<student>
<Id>1</Id>
<phone>2132154654</phone>
<phone>123215458</phone>
</student>
<student>
<Id>2</Id>
<phone>2132154654</phone>
</student>
</Root>
大概的XML是这样么?
3. 关于XML序列化求助
根据你提供的XML,创建三个类,然后再利用一楼的方法把这个XML文件反序化成MyData类。高手这两个字我受不起,希望有更牛X的人来...
[Serializable]
public class something
{
pubilc int id {get;set;}
public string name{get;set;}
}
[Serializable]
public class MyFile
{
[xmlAttribute("name")]
pubilc string name{get;set;}
[xmlAttribute("size")]
pulic string size{get;set;}
[xmlElement("file")]
public List<something> listSomething{get;set;}
}
[Serializable]
[xmlRoot("data")]
pubilc class MyData
{
[xmlArray("files")]
[xmlArrayItem(file)]
public List<MyFile>ListMyfile{get;set;}
}
4. C#xml序列化
给你个思路,用反射(System.Reflection命名空间)来读出对象中所有的属性,然后用XmlDocument类读取XML
5. 如何在C 实现自定义XML序列化问题,怎么解决
对于字符串,你有一些选择;xml可以简单地用 XmlSerializer ( 或者 DataContractSerializer,但它提供了对xml的更少控制) 或者 JSON (JSON.net, 等来完成。
XmlSerializer的典型类看起来很简单:
public class Apple {
public string Variety {get;set;}
public decimal Weight {get;set;}//etc}
( 注意我也希望上面的Json.NET 也能工作)
上面的类还应该在数据绑定场景中工作良好,这是由于。
你将序列化:
Apple obj = new Apple { Variety ="Cox", Weight = 12.1M};
XmlSerializer ser = new XmlSerializer(typeof(Apple));
StringWriter sw = new StringWriter();
ser.Serialize(sw, obj);
string xml = sw.ToString();
StringReader sr = new StringReader(xml);
Apple obj2 = (Apple)ser.Deserialize(sr);
但是你可以自定义 xml:
[XmlType("apple"), XmlRoot("apple")]public class Apple {
[XmlAttribute("variety")]
public string Variety {get;set;}
[XmlAttribute("weight")]
public decimal Weight {get;set;}//etc}
DataContractSerializer 是最理想的,更喜欢:
[DataContract]public class Apple {
[DataMember]
public string Variety {get;set;}
[DataMember]
public decimal Weight {get;set;}}
6. C# .Net Xml序列化与反序列化问题:Xml节点是动态的,不确定的,怎么构建实体类对Xml进行(反)序列化
你是要控制序列化后xml文件吗?正常情况下不需要控制序列化后的结果,否则需要实现IXmlSerializable接口,我实现过,很麻烦。
7. 对数据库进行XML序列化
// Create the connection.
string constr = "User Id=scott;Password=tiger;Data Source=oracle";
OracleConnection con = new OracleConnection(constr);
con.Open();
// Create the command.
OracleCommand cmd = con.CreateCommand();
// Set the XML command type to query.
cmd.XmlCommandType = OracleXmlCommandType.Query;
// Change the SQL query, and set the maximum number of rows to 2.
cmd.CommandText = "select * from emp e";
// Set the XML query properties.
cmd.XmlQueryProperties.MaxRows = 2;
cmd.XmlQueryProperties.RootTag = "ROWSET";
cmd.XmlQueryProperties.RowTag = "ROW";
Stream stream = cmd.ExecuteStream();
// 将这个Stream写到XML文件里就可以了,这步相信对你来说很容易
8. C#中的xml序列化过程(详细的例子)
要序列化的对象:
[Serializable]
public class Person
{
public string Name{get;set;}
public int Age{get;set;}
}
实例化一个对象:
Person p = new Person();
p.Name="张三";
p.Age=18;
序列化:
Type typePer = p.GetType();
XmlSerializer xmlSer = new XmlSerializer(typePer);
using (FileStream fs = new FileStream("person.xml", FileMode.Create))
{
xmlSer.Serialize(fs, p);
}
也可以序列化一个LIST集合:
List lps = new List();
lps.Add(对象);
lps.Add(对象);
......
XmlSerializer x = new XmlSerializer(lps.GetType());
using (FileStream fs = new FileStream(@"D:\per.xml", FileMode.Create, FileAccess.Write))
{
x.Serialize(fs, lps);
}
9. c#xml序列化时,怎么设置xml的编码,我要设置为GBK编码
请问楼主是如何把你的XML文档改成UTF-8编码的?
除了把XML文件中最开始的那个声明变成 <?xml version="1.0" encoding="utf-8"?> 之外,还需要把这个XML文件本身另存为UTF-8的编码方式(在VisualStudio里面选择另存为,在“保存”按钮的右边有个向下小箭头,点开后选择UTF-8)。不知楼主说的“高级页面设置”是什么?指的是“文件 - 高级保存选项”吗?
此外,请问楼主的代码是如何读取这个XML的?是怎么失败的?抛出什么异常了?
10. 写出这个类对象XML序列化函数serialize
先将Solidworks中画好的装配体另存为.x_t的类型,如下图所示,而且文件名一定要是英文的。
打开ADAMS,选择Improt a file,然后在下面的Start in中找到你刚才保存的文件,要注意的是保存的路径也要是英文的,比如保存在D盘的adams中,如下图所示。
点击OK按钮,在弹出的对话框中按照下图所示操作:在File Type中选择Parasolid 开通的,在File To Read 中将鼠标放在其对话框中,点击右键,选择Browse 找到你命名.x_t的文件;最后一行左边,如果你是装配体就选择 Modle Name,如果是零件就选择Part Name,在右边同第二行一样,点击鼠标右键,选择create 然后在新弹出的对话框中输入你想重新命的名字。要注意,一定不能直接输入名字,否则最后在ADAMS中显示不出来。
点击OK按钮,出现的图如果是纯线条的框图,如下图所示,那么如何改为实体图呢?
点击右边所示的工具条的最左下端的Render 便会出现所想要的实体图形,如下图所示。