我为应用程序开发了自动化应用程序,我在其中读取XML文件执行测试。输入文件非常庞大。输入XML包含属性BatchId。此属性位于根元素本身中。我想在完成测试后将此属性值修改为datetime.now。如果我读完整个文件就会达到性能。因为我正在考虑使用相同的数据进行一些性能测试。
谢谢, 阿努普
答案 0 :(得分:0)
安全方法是使用XmlReader / XmlWriter复制XML,并在运行时对其进行修改。本文很有帮助:Combining the XmlReader and XmlWriter classes for simple streaming transformations
快速而危险的方法是确保原始XML文档具有占位符时间戳,您可以使用新的时间戳替换它们(它们的大小必须相等)。使用普通的文件流(将文件视为二进制文件)来定位属性的位置(例如,通过将前几百个字节加载到内存中并搜索属性名称)并使用搜索和写入直接在文件中替换它。如果您选择这样做,请非常小心。除非您测试所有内容,否则您未考虑的其他编码或其他更改将为您提供损坏的文件。
答案 1 :(得分:0)
创建一个仅包含根元素及其属性的文件,以及对包含根元素内容的另一个文件的实体引用。然后,您只需要修改小包装器文件。为此,您需要使用不扩展实体引用的XML解析器,或者(在这种情况下可能更简单)非XML方法。