日期:2014-05-19  浏览次数:21105 次

字符串保存为xml文件 提示出错,困扰了我3天了!
System.Xml.XmlDocument   dc   =   new   XmlDocument();
dc.Load(new   System.IO.MemoryStream(System.Text.Encoding.Default.GetBytes(bts)));
dc.Save(gncls.apppath()   +   @ "\login.xml ");
MessageBox.Show( "保存成功! ");
把字符保存成xml文件   错误提示:   “.”(十六进制值   0x00)是无效字符。   行   9,位置   1。



------解决方案--------------------
先顶一个
------解决方案--------------------
我的bts是怎么来的,是什么数据?
------解决方案--------------------
dc.LoadXml
------解决方案--------------------
十六进制值 0x00 这个是字符串结束吧

------解决方案--------------------
估计是你从byte转字符串过程中有非法字符啥的
------解决方案--------------------
代码给详细点
------解决方案--------------------
帮顶
------解决方案--------------------
Xml的值中不能包括"."字符,如果有这种情况,要把它转成相应的Xml的字符.
------解决方案--------------------
bts是xml 字符串?
那么没有必要在进行转换

string xxml = " <?xml version=\ "1.0\ " encoding=\ "utf-8\ "?> <Xmlmessage> <message> <id> 123 </id> <content> 你好 </content> </message> <message> <id> 456 </id> <content> 你好吗 </content> </message> </Xmlmessage> ";
XmlDocument xdoc = new XmlDocument();
xdoc.LoadXml(xxml);
xdoc.Save(gncls.apppath() + @ "\login.xml ");

------解决方案--------------------
将xml所有非法的字符串,去掉,或者替换为转义字符
------解决方案--------------------
把你得到的bts 字符串 贴出来看看
------解决方案--------------------
你把要保存到xml的字符串先显示出来看,是哪里出的问题?
------解决方案--------------------
要转字符串,可以用高级流吧,你在内存流外再套一个流
------解决方案--------------------
不要用XmlDocument,用保存文本文件的方式保存字符串,文件的后缀名为“.xml”
------解决方案--------------------
<![CDATA[...]]>
------解决方案--------------------
这个传过来的xml内容 本身有点问题

<?xml version= "1.0 " encoding= "utf-8 " ?>
<RESPONSE>
<PAGESIZE> 000385 </PAGESIZE>
<HEADER>
<COMMAND> LOGIN </COMMAND>
<QUERYID> 9 </QUERYID>
</HEADER>
<BODY>
<STATE> 1 </STATE>
<ROLE> 12345678,cv2334545 </ROLE>
<LOGINID> 1204 </LOGINID>
<CONFIG_VER> 1 </CONFIG_VER>
<NEEDDOWN> 1 </NEEDDOWN>
<CONFIGINFOA> 初始企业配置,调试 </CONFIGINFOA>
<QUESTIION> -1 </QUESTIION>
<CBCJ> -1 </CBCJ>
</BODY>
</RESPONSE>
下面行为空就没错
<CONFIGINFOA> </CONFIGINFOA>
是不是你转换的时候 中文编码的问题.
------解决方案--------------------
那里没错 是编码搞错了
<?xml version= "1.0 " encoding= "gb2312 " ?>