以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XML基础 』  (http://bbs.xml.org.cn/list.asp?boardid=1)
----  用C# 编写XML 遇到的困难,请好心人帮助?  (http://bbs.xml.org.cn/dispbbs.asp?boardid=1&rootid=&id=74141)


--  作者:mushi
--  发布时间:4/13/2009 8:01:00 PM

--  用C# 编写XML 遇到的困难,请好心人帮助?
用C# 编写XML 遇到的困难,请好心人帮助?
C# 序列化问题
我在用C#编写XML中的ELEMENT的时候遇到个困难,我看了很多资料,上面都是
[xmlelement("name",typeof(...))]
这里的“name”我想让他变成变量,谁能知道怎么变?
--  作者:hexun831012
--  发布时间:4/13/2009 10:35:00 PM

--  
又是你啊,可怜
花点时间找点文档给你看看
关于反射
http://msdn.microsoft.com/zh-cn/library/z919e8tw(VS.80).aspx
关于序列化
http://msdn.microsoft.com/zh-cn/library/2baksw0z(VS.80).aspx
关于Writer
http://msdn.microsoft.com/zh-cn/library/tx3wa6ka(VS.80).aspx
个人不太喜欢把饭喂进嘴里,还是希望大家踏实实践,加油吧!
--  作者:mushi
--  发布时间:4/13/2009 10:54:00 PM

--  
反射那我看了,我弄的是序列化成XML文档的。我看反射了,它只能实现对属性的改变,不可能改名称。
--  作者:hexun831012
--  发布时间:4/14/2009 4:30:00 PM

--  
难道你非要用Xml序列化声称文档吗,这条路走不通就换条路走,连Stream都能输出Xml文档,何必非要用高级对象,高级对象本身就是对低级对象的封装,简化了接口,但牺牲了灵活性,所以上面的不行,就退而求其次,上一个帖子我都写了示例了,就那么简单。
--  作者:mushi
--  发布时间:4/14/2009 7:18:00 PM

--  
是这样的,你说的那种表示XML文件的方法我明白,我这里是个大的软件的一部分,我是修改这个软件,如果改的比较多,我害怕会影响其他的数据。如果单独的一部分,肯定能实现。
--  作者:hexun831012
--  发布时间:4/14/2009 9:25:00 PM

--  
再大的软件无非就是文档,接口都会写得清清楚楚的,至于怎么实现,那就是你的事,你按照你的方法实现,这是毫无问题的,作为文档的撰写人员,绝对有能力认识到接口本身是否可能实现,接口是程序的基础,如果制定的不好,未来的变更成本是相当可观的。
别告诉我你们没文档哈,没有详细设计文档,是开发不出什么大软件的,呵呵



--  作者:mushi
--  发布时间:4/15/2009 11:55:00 PM

--  
确实啥资料没有,是下载国外的软件。我们在原有资料上修改的。我这两天又看了一下这个软件,好像就是序列化的问题,主要就是通过序列化那把[XMLelement()]里的标签名称弄出来了。我认为如果像你那样写的话用XMLstartelement,肯定能实现对XML的读写,如果像你那样写,序列化怎么办?是通过序列化把标签弄出来的。我毕业设计就剩这点没弄完,郁闷!
--  作者:hexun831012
--  发布时间:4/16/2009 6:09:00 PM

--  
看来你没有弄清楚什么是序列化
所谓序列化就是对象和XML之间的转换,也就是内存和文本之间的转换
将对象转换成XML文本叫做(正)序列化,而把文本转换成对象叫做反序列化
Xml序列化工具同时封装了这两个过程,通过类型系统和元数据(也就是你声明的属性)信息来满足你所需要的序列化过程,而其实现的方法就是反射和XmlReader,XmlWriter
你所说的比如要获取标签,这是一个反序列化过程,可以通过XmlReader.Name,XmlReader.Namespace等等方法来获取,我上面贴出的文档就是教你如何使用XmlReader和XmlWriter
当然XmlReader相对XmlWriter来说更加抽象,而且难于调试,对新手来说很难控制,我很理解,还有个笨办法就是用XmlDocument,把它载入DOM(其实这就是一个反序列化到一个抽象对象的过程),任何信息都很容易获取
--  作者:mushi
--  发布时间:4/16/2009 9:32:00 PM

--  
兄弟,你说的DOCUMENT的那种,那个软件用的就是这个。[xmldocument()]
[xmlelement(elementname="",)]我是想知道怎么能改elementname里的名字,今天我又试了一下,我通过定义字符串那种,怎么也行不通。都快没办法了。要不那天有时间我把软件传给你,你帮着看看?
--  作者:hexun831012
--  发布时间:4/16/2009 10:28:00 PM

--  
[xmldocument()]这个还是属性,使文档属性
知道什么是属性马,属性是程序的元数据,在runtime时不会修改的,也就说不可能用变量去负值,要不然不就是程序修改了程序本身了吗
我说的XmlDocument对象,比如XmlDocument document = new XmlDocument(); document.Load("XXX.xml");
我觉得我是教不会你了,你缺的太多,我都不知道从何说起
--  作者:mushi
--  发布时间:4/17/2009 12:07:00 PM

--  
你的意思我明白了,我昨天晚上想了一下,觉得很有道理。今天弄了一下,像你那么浓应该可以实现。争取十天搞定,呵呵。谢谢了。
--  作者:hexun831012
--  发布时间:4/17/2009 6:04:00 PM

--  
加油吧,慢慢来,心急吃不了臭豆腐。
--  作者:mushi
--  发布时间:4/17/2009 8:29:00 PM

--  
谢谢,今天下午我弄了一下午基本上实现名字标签改成变量了,没想到这么简单。呵呵
还有点小问题,我自己还得弄一下
--  作者:hexun831012
--  发布时间:4/17/2009 9:57:00 PM

--  
GOOOOOOOOOOOOOD
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
70.313ms