我有一个xml文件(从xfdl转换而来),其中包含:
<custom:popUp xfdl:compute="toggle(activated,'off','on') == '1' ? viewer.messageBox('o Once you click ..... page.
o When you use the “Create ” function in.......Portal.','Information'):''">
我加载它并使用...
保存XmlDocument xmlOut = new XmlDocument(); //note: not read only
FileStream outfs = new FileStream(tempOutXmlFileName, FileMode.Open, FileAccess.Read,
FileShare.ReadWrite);
xmlOut.Load(outfs);
xmlOut.Save(tempOutXmlFileName);
outfs.Close();
此过程将一些unicode指令转换为实际字符,这些字符完全混淆了xml / xfdl解析,因为现在引号不应该是引号。
有没有人知道我可以保存文件的方式,所有可爱的“
字符都完整无缺?
谢谢。
好吧,在稍微摆弄一下并让xml-&gt; xfdl转换更好地工作之后,我遇到了一个新问题。
下面的解决方案似乎有效,并且xml的所有解析都是正确的,但是当我使用UTF-8对其进行编码并希望编码为ISO-8859时,读取xfdl文件的程序似乎不太喜欢-1
有什么想法吗?
答案 0 :(得分:1)
使用StreamReader和StreamWriter应该有所帮助。要清楚你是在尝试读取和写入同一个文件?我添加了一些很好的使用语句。
XmlDocument xmlOut = new XmlDocument();
//note: not read only
using (FileStream outfs = new FileStream(tempOutXmlFileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (StreamReader reader = new StreamReader(outfs, Encoding.UTF8))
{
xmlOut.Load(reader);
}
using (StreamWriter writer = new StreamWriter(tempOutXmlFileName, false, Encoding.UTF8))
{
xmlOut.Save(writer);
}
我在StreamWriter中设置追加为false,似乎有道理。
答案 1 :(得分:0)
事实证明,逐字节读取和写入文件解决了问题,因为作者从未有机会对内容进行任何解释。