问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c#xml序列化问题

发布网友 发布时间:2022-05-20 21:56

我来回答

5个回答

热心网友 时间:2024-03-05 16:45

给你个我写的用XML存配置的类。你自己看吧。 我看见你的第二题了。仔细看这个。简单的存储都有了

using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.IO;
using Microsoft.Win32;
using System.Drawing;
using System.Windows.Forms;

namespace ChartFormat
{
class Config
{
#region 删除配置文件
/// <summary>
/// 删除配置文件
/// </summary>
/// <returns></returns>
public static bool DelConfig()
{
string m_strFullPath = "";
m_strFullPath = Directory.GetCurrentDirectory() + @"\" + "Config.config";
try
{
File.Delete(m_strFullPath);
return true;
}
catch
{
return false;
}
}
#endregion

#region 判断该路径文件是否存在 如果不存在则创建
/// <summary>
/// 判断该路径文件是否存在 如果不存在则创建
/// </summary>
/// <param name="m_strFullPath">路径</param>
public static void ConfigFile(string m_strFullPath)
{
StreamWriter sr = null;
if (!System.IO.File.Exists(m_strFullPath))
{
try
{
sr = new StreamWriter(m_strFullPath);
sr.WriteLine("<?xml version=" + "\"" + "1.0" + "\"" + " encoding=" + "\"" + "utf-8" + "\"" + " ?>");
sr.WriteLine("<configuration>");
sr.WriteLine("<appSettings>");
sr.WriteLine("<add key=" + "\"" + "NameColour" + "\"" + " value=" + "\"" + "Blue" + "\"" + "/>");
sr.WriteLine("<add key=" + "\"" + "InfoColour" + "\"" + " value=" + "\"" + "Black" + "\"" + "/>");
sr.WriteLine("<add key=" + "\"" + "IsURL" + "\"" + " value=" + "\"" + "0" + "\"" + "/>");
sr.WriteLine("<add key=" + "\"" + "IsEmail" + "\"" + " value=" + "\"" + "0" + "\"" + "/>");
sr.WriteLine("<add key=" + "\"" + "IsMoveTime" + "\"" + " value=" + "\"" + "1" + "\"" + "/>");
sr.WriteLine("<add key=" + "\"" + "IsMove" + "\"" + " value=" + "\"" + "1" + "\"" + "/>");
sr.WriteLine("<add key=" + "\"" + "MoveValue" + "\"" + " value=" + "\"" + "3" + "\"" + "/>");
sr.WriteLine("</appSettings>");
sr.WriteLine("</configuration>");
sr.Close();
}
catch (Exception e)
{
sr.Close();
MessageBox.Show("创建配置文件错误!", "信息", MessageBoxButtons.OK, MessageBoxIcon.Question);
}
finally
{
if (sr != null)
{
sr.Close();
}
}
}
}
#endregion

#region 更新Config文件
/// <summary>
/// 更新Config文件
/// </summary>
/// <param name="p_strKey">键</param>
/// <param name="p_strValue">值</param>
public static void UpdateConfig(string p_strKey, string p_strValue)
{
try
{
string m_strFullPath = "";
XmlDocument xmlDoc = new XmlDocument();
m_strFullPath = Directory.GetCurrentDirectory() + @"\" + "Config.config";
ConfigFile(m_strFullPath);
if (File.Exists(m_strFullPath))
{
//处理数据文件为只读的情况
if ((File.GetAttributes(m_strFullPath) & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
{
File.SetAttributes(m_strFullPath, File.GetAttributes(m_strFullPath) & (~FileAttributes.ReadOnly));
}
}
xmlDoc.Load(m_strFullPath);
XmlNodeList nodeList = xmlDoc.SelectSingleNode("/configuration/appSettings").ChildNodes;
foreach (XmlNode xn in nodeList)//遍历所有子节点
{
XmlElement xe = (XmlElement)xn;
if (xe.GetAttribute("key").IndexOf(p_strKey) != -1)
{
xe.SetAttribute("value", p_strValue);
}
}
xmlDoc.Save(m_strFullPath);
//fs.Close();

}
catch (System.NullReferenceException NullEx)
{
throw NullEx;
}
catch (Exception ex)
{
throw ex;
}

}
#endregion
}

public class ConfigInfo
{

private string strNameColor =ColorTranslator.ToHtml( System.Drawing.Color.Blue);

private string strInfoColor = ColorTranslator.ToHtml(System.Drawing.Color.Black);

private string strIsURL = "1";

private string strIsEmail = "1";

private string strIsMove = "1";

private string strMoveValue = "3";

private string strIsMoveTime = "1";

/// <summary>
/// 是否移除空格
/// </summary>
public bool IsMoveTime
{
get
{
if (strIsMoveTime == "1")
{
return true;
}
else
{
return false;
}
}
set
{
if (value)
{
strIsMoveTime = "1";
}
else
{
strIsMoveTime = "0";
}

}
}

/// <summary>
/// 缩进空格
/// </summary>
public decimal MoveValue
{
get
{
return Convert.ToDecimal(strMoveValue);
}
set
{
strMoveValue = value.ToString();
}
}

/// <summary>
/// 是否缩进
/// </summary>
public bool IsMove
{
get
{
if (strIsMove == "1")
{
return true;
}
else
{
return false;
}
}
set
{
if (value)
{
strIsMove = "1";
}
else
{
strIsMove = "0";
}

}
}

/// <summary>
/// 邮件是否可以点击
/// </summary>
public bool IsEmail
{
get
{
if (strIsEmail == "1")
{
return true;
}
else
{
return false;
}
}
set
{
if (value)
{
strIsEmail = "1";
}
else
{
strIsEmail = "0";
}
}
}

/// <summary>
/// 网页是否可以点击
/// </summary>
public bool IsURL
{
get
{
if (strIsURL== "1")
{
return true;
}
else
{
return false;
}
}
set
{
if (value)
{
strIsURL = "1";
}
else
{
strIsURL = "0";
}
}
}

/// <summary>
/// 消息颜色
/// </summary>
public Color InfoColor
{
get
{
return ColorTranslator.FromHtml(strInfoColor);
}
set
{
strInfoColor = ColorTranslator.ToHtml(value);
}
}

/// <summary>
/// 信息颜色
/// </summary>
public Color NameColor
{
get
{
return ColorTranslator.FromHtml(strNameColor); ;
}
set
{
strNameColor = ColorTranslator.ToHtml(value);
}
}

public ConfigInfo()
{
string m_strFullPath = "";
XmlDocument xmlDoc = new XmlDocument();
m_strFullPath = Directory.GetCurrentDirectory() + @"\" + "Config.config";
Config.ConfigFile(m_strFullPath);
xmlDoc.Load(m_strFullPath);

XmlNodeList nodeList = xmlDoc.SelectSingleNode("/configuration/appSettings").ChildNodes;
foreach (XmlNode xn in nodeList)//遍历所有子节点
{
XmlNodeReader objNdRd = new XmlNodeReader(xn);

while (objNdRd.Read())
{
if (objNdRd.GetAttribute("key").IndexOf("NameColour") != -1)
{
this.strNameColor = objNdRd.GetAttribute("value");
}
if (objNdRd.GetAttribute("key").IndexOf("InfoColour") != -1)
{
this.strInfoColor = objNdRd.GetAttribute("value");
}
if (objNdRd.GetAttribute("key").IndexOf("IsURL") != -1)
{
this.strIsURL = objNdRd.GetAttribute("value");
}
if (objNdRd.GetAttribute("key").IndexOf("IsEmail") != -1)
{
this.strIsEmail = objNdRd.GetAttribute("value");
}
if (objNdRd.GetAttribute("key").IndexOf("IsMove") != -1)
{
this.strIsMove = objNdRd.GetAttribute("value");
}
if (objNdRd.GetAttribute("key").IndexOf("MoveValue") != -1)
{
this.strMoveValue = objNdRd.GetAttribute("value");
}
}
}
}

public void Update()
{
Config.DelConfig();
string m_strFullPath = "";
XmlDocument xmlDoc = new XmlDocument();
m_strFullPath = Directory.GetCurrentDirectory() + @"\" + "Config.config";
Config.ConfigFile(m_strFullPath);
Config.UpdateConfig("NameColour", strNameColor);
Config.UpdateConfig("InfoColour", strInfoColor);
Config.UpdateConfig("IsURL", strIsURL);
Config.UpdateConfig("IsEmail", strIsEmail);
Config.UpdateConfig("IsMove", strIsMove);
Config.UpdateConfig("MoveValue", strMoveValue);
}
}
}

热心网友 时间:2024-03-05 16:45

要可以序列化的类构造函数不能有参数
你可以改成如下就可以了
public class Person
{
public Person()
{
name = Name;
id = ID;
}
public string name;
public string id;
}
private void button4_Click(object sender, EventArgs e)
{
Person person1 = new Person();
person1.name = "abc";
person1.id = "1234";
XmlSerializer s = new XmlSerializer(typeof(Person));
TextWriter w = new StreamWriter("person1.xml");
s.Serialize(w, person1);
w.Close();
}

热心网友 时间:2024-03-05 16:46

public class Person
{
public string name;
public string id;
public Person()
{
}

public Person(string Name, string ID)
{
name = Name;
id = ID;
}
}

在这个类里加一个空参数得构造函数,如上所示

热心网友 时间:2024-03-05 16:46

类必须有一个将由 XmlSerializer 序列化的默认构造函数。

参考资料:http://msdn.microsoft.com/zh-cn/library/182eeyhh(VS.80).aspx

热心网友 时间:2024-03-05 16:47

你给类加一个无参数的缺省构造函数就行了
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
王奇 这个名字好不好 城建税等计入什么科目 灭火器多久保养一次 灭火器保养周期是多久? 朋友在北京想开一家超市的,请问什么地方适合?还有前期要准备什么? 恐龙宝宝漫游记之我爱我家2内容提要 我爱我家艳红为什么离婚 Faudel演唱的法语歌曲mon pays 的中文歌词,哈哈哈哈,谁有 Shy'm的Le blues de toi 歌词意思 ...那个t后面省略了什么 还有,希望能帮我翻译一下以下的歌词_百度... 地下城堡2小米版安卓APK如何下载 芝士焗小龙虾会不会好吃 如何XML序列化一个接口 我在优酷客户端看到一个好看的视频,我想把分享到新浪微博上面,可是分享的是原来那个不用的微博了,我想 怎么支持xml序列化实体 如何在C 实现自定义XML序列化问题,怎么解决 一名厨师该从那里开始学习?怎么学才能领会? 学厨师该怎么开始 当学徒还是去培训 想学厨师要从哪里入手? 学厨师的话要从哪一步开始? 核酸检测阴性是居家隔离还是指定隔离,病人能如院吗? 旺军手擀面怎么样 岐山民俗村哪家东西好吃?那些食物具有代表性?价钱大概是多少 令氏家外家铭秀苑怎么样 牛腩怎样做牛肉臊子? 我的使用别人的身份证实名认证,想换回自己的身份证号有什么办法? 如何实名认证 股票分红更好还是送股更好?为什么 七夕节是什么节啊 260万20年,月供多少 房贷56万,贷20年,月供3131.33,年利率多少? 如何在XML序列化时隐藏可为null的的字段 芝士烤龙虾一般都是怎么制作的呢? 芝士焗小红龙的做法,芝士焗小红龙怎么做好吃 如何将XML序列化到MemoryStream并直接读取出来 怎样上传视频去新浪?首页个人中心都找不到上传符号,微博上传只能去土豆和优酷。可是版权问题过不了审【 如何运营自媒体挣钱 c#xml序列化时,怎么设置xml的编码,我要设置 xml序列化后怎么与服务器端链接 C# xml序列化中typeof()的问题 什么是xml/jason,如何序列化xml,如何序列化jason C# .Net Xml序列化与反序列化问题:Xml节点是动态的,不确定的,怎么构建实体类对Xml进行(反)序列化? C#中如何序列化有属性的XML节点? 芝士烤龙虾这种食物是哪里研究出来的?它好吃的地方在哪里? 炉石传说什么时候更新?更新什么内容? 炉石传说什么时候更新 怎么免费领取GTA5? 给他爱5豪华版奖励怎么领 怎样区分才出生小鸡的性别 城乡新农合每月扣除3o元是什么险 30元意外险能赔多少钱