警告:我不知道如何使用XML。
我有一个简单的应用程序,其唯一目的是保留关于对象的十个属性(如果你愿意,可以记录日志)。我快速写了它,它通过将属性附加到纯文本文件来编写属性。问题解决了。
现在,我读到对于像这样的简单应用程序,一个XML将是一个很好的选择。我不打算改变我的剧本(这么简单,效果很好),但这让我思考。
假设您要使用XML创建日志。
你如何写一个条目?
您是否阅读了整个XML文件,附加条目,然后重写整个内容?我不明白的是如何“附加”到XML文件,考虑到你不能在没有阅读它的情况下“追加”到纯文本文件的中间,解析它并再次写它。
请指导我。
干杯。
答案 0 :(得分:1)
XML并不适合您需要逐步追加的任何内容。格式良好的XML文档具有单个根元素,该元素包含(几乎)整个文档。例如:
<my-root>
<a-child/>
<another-child/>
<yet-another-child/>
</my-root>
在此示例中添加一个孩子将要求您在<yet-another-child/>
和结束</my-root>
之间插入新子项。虽然可以通过寻找<yet-another-child/>
的末尾并编写新的尾部而不必重写整个文件来实现这一点,但实际上找到的位置足够复杂,坚持支持真正附加的东西,如平文本文件,可能是更明智的选择。
答案 1 :(得分:1)
如果我真的必须这样做,我会构建XML,以便将条目视为根元素的子项,打开文件,回读直到我在开始时关闭根元素的标记,编写新元素,然后再次写入根元素。
大多数情况下,我不会这样做。 XML不是一个很好的日志条目格式(我说的是XML的忠实粉丝)。我可能认为将每个条目作为XML片段很有用,但即使这样也不太可能。
如果您确实需要XML日志格式,请以更合理的格式登录,然后根据需要在这些日志上生成XML报告。如果您旋转日志文件(例如,今天写入appLog20101001.log,明天写入appLog20101002.log),则可以通过将XML文件保存为不再附加的日志来进行优化。
答案 2 :(得分:0)
这实际上取决于您用于编写应用程序的语言,但大多数现代语言都有一个库,无论是在其基本框架中还是作为外部文件,都称为XML解析器。
它是一个用于读写XML文件的库。重要的是,XML是一种非常分层的数据结构,因此您不能直接以文本文件的形式进入文件并写入文件。
答案 3 :(得分:0)
Log4J提供XML日志追加器。因此,如果您愿意,可以使用XML条目记录整个应用程序。为了解析内容,我将使用Java 6中的JAXB内置API。您可以派生所有类进行编辑,因为您拥有XML输出结构的XDS或XML Schema。