是多种因素阻止我添加默认命名空间。与 IT 中的大多数事情一样,解决方案是直截了当的,但并不容易实现:
这里的关键是使用 .addNamespaceDeclaration(“”, namespace) 并将第一个参数设置为“” 这不直观我使用的 .setNamespace() 不起作用。
我也没有意识到使用以下方法创建元素:
new Element("env:CEnvelope", IConstants.ENV_NAMESPACE);
自动在根元素中创建命名空间 xmlns:env;我又明确地这样做了;这不会导致问题,但如果您在此之后使用 .addNamespaceDeclaration(“”, namespace) 它将不起作用。
带有 ** 的行就是您所需要的:
private void setRoot(){
Element root = new Element("env:CEnvelope", IConstants.ENV_NAMESPACE);
//Add root Element to the Document
this.doc = new Document(root);
root.addNamespaceDeclaration("xsi", IConstants.XSI_NAMESPACE);
**root.addNamespaceDeclaration("", IConstants.PAT_NAMESPACE);
//root.setNamespaceURI(IConstants.PAT_NAMESPACE);
//root.addNamespaceDeclaration("env", IConstants.ENV_NAMESPACE);
哦,是的,我不需要 inv 命名空间,因为这与默认命名空间相同!
干杯:-)