第一种方法,你将xml当文本文档处理,所有xml的内容都进行加密处理,加密后的内容变成了一串字符串,当你需要的时候将文本读取到内存中,然后进行解密,然后再转换成xml,然后再进行处理。
第二中就是将xml中每个元素的值,在写入的时候进行加密,在需要的时候先到xml中读取,再解密。
我想使用第一种方法,我是先将加密后的文件放到bin\debug文件夹下面,然后在使用的时候把加密的xml文件解密成为正常的xml文件,但是我还不想改变在bin\debug文件夹下的xml文件内容,这个怎么处理阿
@huomick: 解密后的内容是在内存当中,你不去写入就不会改变啊
@az235: 我是不是先对XmlDocument.Load(xmlFilePath),然后对xml文件进行解密操作,接着对xml文件操作,是这样吗
@huomick: 正确,但是记住不要将内容写入到加密的文件中,如果要修改,就要再次加密
@az235: 还想问您件事就是虽然xml文件放入到内存了,放入内存的xml文件是已经加密好的,通过解密xml文件会放在那里,我将如何对解密后的xml文件进行操作;其实我想做的是xml文件放的是服务器相关的信息(ip、serverName、userName),我对xml文件操作的时候把那些信息都取出来存放到List<ServerInfo>中这个操作已完成,主要是前面的操作。
@huomick:
public void xxx()
{
using(StreamReader objReader = new StreamReader(文件路径))
{
string sLine=objReader.ReadToEnd();
//解密sLine
XmlDocument xml = XmlDocument.Load("解密后的字符串")
//放到List中
}
}
@az235: 您在load的时候应该是xml文件路径,怎么变成字符串了,而且解密后的xml文件应该存放到一个路径下吧!
@huomick: 文件路径是你加密后的文件,文件解密存储在字符串中就等于在内存当中,当你用laod方法时,系统内置了加载字符串的功能,所以这个操作还是在内存当中,这样说你能否明白?
@az235: 还是有点不明白,主要是在加载字符串的地方。
@huomick: 想想解码后返回的内容是什么?将那个内容当字符串处理
@az235:您看看我说的是不是和您的思路一样:先是把加密xml文件读出来放到字符串中,然后通过解密算法把xml解密成正常的xml文件放到sLine中,在用xmldocument.Load(sLine)对xml文件进行操作,您看是这样吗?
@az235: 在加密的时候,我怎么保存加密好的xml文件呢,还需要对xml文件进行加载吗
@az235: 我试了您的思路,好像有问题:
using (streamReader sr = new StreamReader(xmlFilePath)){
string sLine = sr.ReadToEnd();
//解密
string jieMi = File.Decrypt(sLine);
xmlDocument doc = new XmlDocument();
doc.Load(jieMi);
//对xml文件进行操作
}
我运行的时候报异常了Illegal characters in path.
@huomick: 路径错了
@az235: 那我load应该是什么呢!难道是xmlFilePath吗
@az235: 我问您下就是,我经常要使用Load方法,我能不能把Load方法单独拿出来定义一个方法,等到调用对xml文件进行操作的方法时,就不用再到方法内部进行Load,这个怎么实现阿。
@huomick: 面向对象的重载
@az235: 怎么个重载法阿!能给个实例吗
@huomick: 哥你还在吗!我想问您个问题就是我想在xml中做个文件过滤器,在读xml文件的时候,读到的方法为true的话就直接调用已经写好的过滤方法。这个功能怎么实现阿!您帮我答完直接给分
@huomick: 用switch就好了,switch中枚举出你要调用的方法,然后读到方法名就调用,这样你能明白不?不要用true、if、else这些。
@az235: 在xml中那个验证方法名应该怎么写啊!是这样写吗!
<filters id="checkFile">
<filter>.txt</filter>
<filter>.exe</filter>
<filter>.doc</filter>
</filters>
当我要验证文件的时候,先对上传文件名的后缀进行判断,如果满足以上类型就调用相应的过滤器
@huomick: 正确,有进步
@az235: 哥,以后有问题还能向您请教吗!我的园豆不够了。
@huomick: 把问题提上来,就会有人帮你解决的,我一般都在这上面的
@huomick:把这个问题也结束了吧 http://q.cnblogs.com/q/32674/#c260017
@az235: 谢谢了阿!
@az235: 您要是帮我针对Load写个独立的方法,我才能结阿!您上次说的对象重载怎么实现阿