(求点实用代码和建议)怎么读写XML文件?

dyw31415926 2006-11-20 11:35:05
以前没怎么用到XML,都是文本读写,现在用到了,到MSDN找了一下,感觉勉强能读写了,不过还是希望各位大侠出手相助,让偶少走弯路.
目的:读XML进行操作(有高效率算法更好,要是没有, 能实现也可以啦)
现有一个类MessageClass,希望将其字段放如XML文件中, 并能执行读和设置的操作
public MessageClass
{
string s = "字段有字符串类型的哈";
int intVar = 10;//还有int类型
byte[] byteArray = new byte[]{0x01,0x02,0x30};//这个更难办,星星们来帮一下?怎么放进去?
short shortVar = 20;//还有short类型...
long longVar = 10000;//还有long类型...为什么不全是string呢,多好啊


}
下面是我希望xml操作类有的函数,不知道怎么写,希望各位赏点代码来:)
public class ClassA

{

public ClassA(String fileName) // 设定储存文件名称
{
}
public String getString(String name) // 提取某个字符串

{

}
public void setString(String name, String value) // 设定某个字符串

{

}
public byte[] getBytes(String name) throws Exception // 提取某个byte array

{

}

public void setBytes(String name, byte[] value) throws Exception // 设定某个byte array

{

}

public void setBytes(String name, byte[] value, int off, int len) throws Exception

{

}

public byte getByte(String name) throws Exception

{

}

public void setByte(String name, int value) throws Exception

{

}

public int getInt(String name) throws Exception

{

}

public void setInt(String name, int value) throws Exception

{

}

public short getShort(String name) throws Exception {

}

public void setShort(String name, int value) throws Exception

{

}

public long getLong(String name) throws Exception {

}

public void setLong(String name, long value) throws Exception

{

}
----------------------------

byte[] byteArray = new byte[]{0x01,0x02,0x30};
<arrayEle>byte[]数组的内容,怎么存呢</arrayEle>
执行getBytes("arrayEle")应取得整个byteArray,即返回byte[]
而getByte("arrayEle")只取得第一个,再调用一次得第二个 ,即返回一个byte

而setbyte可以设置某一个byte,如第二个0x02可以设成其他值
-----------------------------------------------
问题有点难度,有能力的可以练练手
...全文
354 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
dyw31415926 2006-11-23
  • 打赏
  • 举报
回复
郑重声明:本问题还没有解决!上面我说的方法是错误的,在byte[]的元素为单数时回出错.
sdl2005lyx() 最后的方法效率过于低,正在寻求更好的办法ing
sdl2005lyx 2006-11-22
  • 打赏
  • 举报
回复
lz,短信已经回复,请查看!!
dyw31415926 2006-11-22
  • 打赏
  • 举报
回复
问题已经解决,谢谢大家, 结贴!!
byte[] byteArray = new byte[] { 0x01, 200 };
string s = System.Text.Encoding.Unicode.GetString (byteArray );
byte[] array = System.Text.Encoding.Unicode.GetBytes(s);
-------------------------
注意:System.Text.Encoding.Unicode若是选Default的话,则当byte里的内容大于128时会,从s再转回byte[]
时就会出错,得不到正确结果!!
sdl2005lyx 2006-11-22
  • 打赏
  • 举报
回复
<回复>请问,那对于byte[]数组怎么存进去?我希望放进去后,能对这个byte数组进行读取和更改的
如放一个byte[3],进去,我能对放在xml里的byte[1]那个内容进行重设置,这个问题该怎么解决呢, 给写代码或提示好吗,谢谢


对byte[]数组,处理稍微复杂一些,你先把byte[] byteArray = new byte[]{0x01,0x02,0x30}变成一个完整的字符串“010230”或“01 02 30”,(这个过程想必你很快就作出来),如同其他做法把这个字符串写到xml中去。

对xml文件的时候,你会读出:
sting str="01 02 30";//以有空格的为例
string[] stra = str.Split(" ");
byte[] b = new byte[stra.Length];
for( int i=0 ; i<stra.Length ; i++ )
{
b[i] = byte.Parse(stra[i],System.Globalization.NumberStyles.HexNumbe);
//注意:后面这个参数非常重要,很多人容易漏掉。否则,字符串中含有‘a’-‘e’
//的任何字符,都会报错,原因是编译器当成ASCII,而非16进制数
}
dyw31415926 2006-11-22
  • 打赏
  • 举报
回复
sdl2005lyx() ( )的站内短信给了我不少提示,还有楼上各位兄弟们,谢谢
shoushii 2006-11-20
  • 打赏
  • 举报
回复
(守护) 名字很像啊
lovefootball 2006-11-20
  • 打赏
  • 举报
回复
如果序列化没接触过的话

用XPath找到结点
然后操作
然后doc.Save
lovefootball 2006-11-20
  • 打赏
  • 举报
回复
直接序列化不完了么?

操作XML的方法很多
DOM、流、DataSet、序列化等
dyw31415926 2006-11-20
  • 打赏
  • 举报
回复
不是吧,都被吓跑啦,能解决哪一部分算哪一部分,又没说要全部解决,有建议提建议,会写代码的写代码,互相帮助,这才是csdn里的气氛哈,不够分可再加,:)
lijgame 2006-11-20
  • 打赏
  • 举报
回复
微软都帮我们做好了。。。
楼主是想自己解析xml文件么?如果不需要的话只需把类写成这样就行了
public MessageClass
{
[XmlAttribute (AttributeName=/*MSG0*/"s")]
string s = "字段有字符串类型的哈";

[XmlAttribute (AttributeName=/*MSG0*/"Var")]
int intVar = 10;//还有int类型
...


}
sdl2005lyx 2006-11-20
  • 打赏
  • 举报
回复
lz:在net中,有以下几个类可以方便实现你的要求:
1、XmlDocument。
这个要求你比较熟悉xml文档对象模型DOM,DOM 使您能够以编程方式读取、处理和修改 XML 文档。有点难度。
2、XmlTextWriter、XmlTextReader
对xml文件的读写,相对简单一些。

msdn上面有详细的介绍,根据你的需要,选择用哪个。
muyanpeng_mail 2006-11-20
  • 打赏
  • 举报
回复
mark up up ~~


---------------

LZ 坚持住 好贴
内容概要:本文围绕不确定环境下的多式联运路径优化问题展开研究,提出并实现了基于AFO算法、遗传算法(GA)和粒子群优化算法(PSO)的三种智能优化方法,并借助Matlab平台完成算法编程与仿真。研究构建了考虑时间、成本、转运风险等多重不确定因素的路径优化模型,系统比较了AFO、GA、PSO三种算法在收敛速度、全局寻优能力和稳定性方面的表现,同时引入Matlab自带的全局优化搜索器作为基准对照,深入分析各算法在复杂物流网络中的适用边界与性能差异。研究表明,AFO算法在解决此类组合优化问题时展现出更快的收敛效率和更强的局部规避能力。; 适合人群:具备一定Matlab编程基础与运筹优化知识,从事物流工程、交通运输规划、智能算法开发等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于多式联运、综合货运网络中的路径决策支持系统构建;②为不确定性条件下复杂路径规划问题提供智能算法选型依据与技术实现方案;③支持科研人员复现主流优化算法并开展横向性能对比实验,推动算法改进与实际落地。; 阅读建议建议读者结合提供的Matlab代码逐模块分析算法实现流程,重点理解目标函数设计、约束条件处理及参数敏感性分析部分,可通过调整问题规模与算法参数进行对比实验,进一步拓展至动态路径规划或大规模网络优化等延伸场景。
内容概要:本文研究了基于QLearning自适应强化学习的PID控制器在自主水下航行器(AUV)运动控制中的应用,通过Matlab代码实现了控制算法的仿真验证。该方法融合强化学习的在线自适应能力与传统PID控制的稳定性优势,利用QLearning算法动态优化PID控制器的比例、积分、微分参数,以应对水下复杂流体环境、模型不确定性及外部干扰等挑战,从而提升AUV轨迹跟踪的精度、鲁棒性与动态响应性能。文中系统阐述了AUV的六自由度非线性动力学建模过程、QLearning算法的状态空间与动作空间设计、奖励函数构造及训练机制,并详细说明了PID参数自整定的闭环控制架构。仿真结果表明,相较于传统固定参数PID控制器,该智能控制策略在多种工况下均展现出更优的控制效果,有效抑制了超调,加快了响应速度,并增强了抗干扰能力。; 适合人群:具备自动控制理论、强化学习基础及Matlab/Simulink仿真能力,从事水下机器人、智能控制、海洋工程、自动化等领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于AUV、UUV等无人水下平台的高精度自主导航与运动控制;②为解决非线性、强耦合、时变系统的控制器参数自适应整定问题提供智能化解决方案;③作为强化学习与经典控制理论深度融合的技术范例,推动智能控制算法在海洋装备中的工程化应用。; 阅读建议建议读者结合提供的Matlab代码深入理解算法实现细节,重点剖析QLearning的状态-动作-奖励机制设计、PID参数更新逻辑及仿真对比实验结果,有条件者可在更复杂的动力学模型或实际硬件平台上进一步验证与优化算法性能。

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧