我的代码通过向现有Document
添加Attribute
来修改XML Element
。在修改之前,我使用Document
和Schema
运行Validator
验证并通过验证。
但是,在我添加Attribute
(根据架构有效)后,如果我将Document
实例传递给Validator
则失败。
如果作为中间步骤,我会使用Document
实例,将其转换为String
并重新解析为Document
,此新Document
会通过验证。
我认为我不应该这样做。我尝试使用normalizeDocument
和normalize
,但这些都没有解决问题。
更新
我写了一个单元测试,除了验证Document,添加属性并重新验证Document之外什么都不做。这过去了。但是,当我运行通过整个系统传递Document的集成测试时,它会失败。同样,转换为String并返回Document会通过验证。
代码不在我可以将其粘贴到此处的位置,并且由于单元测试通过,它似乎是一个更广泛的问题。
任何有关调查地点的建议都会有所帮助。
答案 0 :(得分:2)
我遇到了名称空间感知XML Document
的问题。
我使用setAttribute(name, value)
添加非命名空间属性,结果相同
元素“y”异常中不允许使用属性“x”。重新解析文档,问题就消失了。
修复方法是使用名称空间感知方法setAttributeNS(namespaceURI, qualifiedName, value)
,将null
作为namespaceURI传递。