2014-09-21 89 views
1

我试图寻找这个问题的答案,但没有找到任何,也许我没有使用正确的话,但没有出现。也许是因为这是不可能的?是否可以在运行时修改并保存程序中的XML文件而不是外部文件?

我想要一个XML文件,将与树视图同步,并且会对树视图进行更改,这将影响XML文件,然后我需要保存它,但我无法给出用户直接访问这个文件,所以我想用程序进行编译,问题是,是否可以通过这种方式修改和保存XML?

非常感谢!

Ray。

附加信息(或者,最后一个问题):

我能保存在XML文档中在我的计划某种程度上这将是今后利用现有 即使我会杀了我的计划? (而不是作为 用户可访问的XML文件?)什么是“资源”我知道我可以把一个 XML文件/文件(?)有,但我将能够修改并保持 变化,我会做它?

+0

你的Q有点不清楚。 '但我不能让用户直接访问这个文件,为什么不呢? '我想用程序编译它如何作为资源?那么它实际上就是你的应用程序的一部分,你不能通过你的应用程序本身来改变它。 – Sjips 2014-09-21 20:10:58

+0

我的意思是用户不应该直接访问该文件,他/她可以从程序的本地文件夹中复制该文件..好吧,谢谢@Sjips所以有没有其他方法可以保护文件免受直接攻击访问? – Ray 2014-09-21 20:12:14

回答

1

有人总是可能复制文件,特别是当他拥有管理员权限时。如果您不希望用户通过编辑来篡改文件,则可以考虑加密。或者在XML文件中添加某种校验和(不是作为标签,而是作为XML注释,以便解析器可以忽略它,但仍可以读取它并使用它来检查文件是否未被破坏)。加密会使文件无法读取; Checksumming将保持文件的可读性,但很难在没有检测的情况下进行更改。

+0

谢谢,让我看看它.. – Ray 2014-09-21 20:41:51

+0

此信息对我也很重要。 – Ray 2014-09-22 09:18:02

1

究竟是一个XML文件?我几乎可以肯定你的意思是一个XML文档。

你可以保持解析的XML文档在内存中的对象。然后,您可以随意修改文档树。我不确定“保存”是什么意思,但确定可以将对象保存为二进制格式或XML格式。树不会自动序列化成文件。

我建议让您的XML作为在内存中的文件树,而不是它写入一个文件,直到你完成修改它。这是否有意义取决于您的应用程序。

什么是你想要保持一个文件,而你正在修改的树的原因吗?也许你正在构建一个XML编辑器?

编辑:还有一个选项:保存XML在数据库中。你甚至可能有一个XML类型的列,这取决于你拥有哪个数据库。那么即使程序崩溃也应该是安全的。

+0

谢谢!你已经解释了一些我不知道的重要的东西,所以我可以将XML文档作为“不作为文件”,但作为一个对象,这意味着我永远不需要将这个文档写入文件,它永远不会用户可访问。现在的问题是:如果像你说的那样,我可以修改文档并将其保存为二进制对象,那么当程序实例死亡时,它可能会作为设置持续下去,或者它会死亡?我所做的只是创建一个同步到树视图的XML文档,树视图也应该具有复选框和对应于XML文档中每个节点的相应设置。 – Ray 2014-09-21 22:59:52

+0

用户不会看到XML内容,因为每个节点有更多的设置,他不应该能够看到(business-copyrights-wise) – Ray 2014-09-21 23:01:32

+0

更新了这个问题。令我感到惊讶的是,XML不仅是一个文件。显然,我不知道“文档”的正确含义,并没有使用XML之前,它不仅仅是从一个文件读取.. 但它仍然不回答我的问题,所以我已经更新它以上。 – Ray 2014-09-22 09:04:38

相关问题