1

Document我有通过添加Attribute到现有的 .xml 来修改 XML 的代码Element。在修改之前,我使用and运行Document通过验证,它通过了。SchemaValidator

但是,如果我将实例传递给它,Attribute则在添加(根据架构有效)之后它会失败。DocumentValidator

如果作为中间步骤,我采用Document实例,将其转换为 aString并重新解析为 a Document,这个新的Document通过验证。

我想我不应该这样做。我尝试使用normalizeDocumentandnormalize这些并没有解决问题。

更新

我编写了一个单元测试,它只验证文档、添加属性并重新验证文档。这通过了。但是,当我运行通过整个系统传递文档的集成测试时,它会按照上述方法失败。同样,转换为 String 并返回 Document 通过验证。

该代码不在我可以将其粘贴到此处的位置,并且由于单元测试通过了,这似乎是一个更广泛的问题。

关于在哪里进行调查的任何建议都会有所帮助。

4

1 回答 1

2

我对命名空间感知 XML 有同样的问题Document

setAttribute(name, value)用来添加非命名空间属性,导致元素“y”异常中不允许相同的属性“x”。重新解析文档,问题就消失了。

解决方法是使用命名空间感知方法setAttributeNS(namespaceURI, qualifiedName, value),作为命名空间URI 传递null

于 2014-02-19T10:10:16.810 回答