それは私がデフォルトの名前空間を追加するのを妨げたものの組み合わせでした。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名前空間は必要ありませんでした。
乾杯 :-)