そのような名前空間接頭辞:XMLファイルdom4jの操作を書く、ラベルは、コロンはorg.dom4j.IllegalAddException報告されており、ほぼコロンの前、ということを意味し、org.dom4j.tree.DefaultElementエラー:***を上スコープ内にあります内容は、次の例を見て、その後、我々はそれが問題を解決することができるかを定義助け、未定義の名前空間です。
これは私がXMLを生成するために必要なもので、タブが含まれていOFD:
<?XMLバージョン= "1.0"エンコード= "UTF-8" ?> < OFD:署名のxmlns:OFD = "http://www.ofdspec.org/2016" > < OFD:たSignedInfo > < OFD:プロバイダはProviderName = "Eseal " 会社=" XXX」バージョン= "1.0" /> < OFD:のSignatureMethod > 123456789 </ OFD:のSignatureMethod > < OFD:SignatureDataTime > 988746454656 </ OFD:SignatureDataTime > < OFD: OFD:CheckValue > qqqqqqqqqqqqqqqqqqqqq </ OFD:CheckValue > </ OFD:リファレンス> < OFD:StampAmot PAGEREF = "1" ID = "インデックス" 境界= "10.0 20.0 30.0 40.0" /> < OFD:シール> < OFD:BaseLoc > Seal.esl </ OFD:BaseLoc > </ OFD:シール> </ OFD:たSignedInfo > < OFD:SignedValue > SignedValue.dat </ OFD:SignedValue > </ OFD:署名>
オペレーションコードは、ルートノードである場合
addNamespace( "名前"、 "dnsURL")
それらを繰り返さないで、比較的単純なコードに名前空間を追加します。
輸入java.io.FileWriter; インポートにjava.io.IOException; 輸入org.dom4j.Document。 輸入org.dom4j.DocumentHelper; 輸入org.dom4j.Element。 輸入org.dom4j.io.OutputFormat。 輸入org.dom4j.io.XMLWriter。 パブリック クラスgenerateXMLTest { 公共 静的 ボイドメイン(文字列[]引数){ generateSignature( "E:\\のtest.xml" )。 } パブリック 静的 ボイドgenerateSignature(文字列fileAddress){ てFileWriterアウト = NULL ; 試します{ アウト = 新しいてFileWriter(fileAddress)。 createDocument()(アウト)書きます。 フォーマットOUTPUTFORMAT = OutputFormat.createPrettyPrint()。 format.setEncoding( "UTF-8" ); XmlWriterライター = 新しいするXMLWriter(System.outに、フォーマット); //设置XML编码 writer.write(のcreateDocument()); } キャッチ(IOExceptionを電子){ e.printStackTrace(); } 最後に{ 場合(アウト!= nullの){ してみてください { out.close(); } キャッチ(IOExceptionを電子){ e.printStackTrace(); } } } } パブリック 静的文献のcreateDocument(){ 文書ドキュメント = DocumentHelper.createDocument()。 要素のルート = document.addElement( "OFD:署名" ) .addAttribute( "のxmlns:OFD"、 "http://www.ofdspec.org/2016").addNamespace( "OFD"、「HTTP:// WWW。 ofdspec.org/2016" ); //在此为OFD:添加命名空间 要素のSignedInfo = root.addElement( "OFD:); 要素プロバイダ = SignedInfo.addElement( "OFD:プロバイダ" ) .addAttribute( "ProviderNameは"、 "Eseal" ) .addAttribute(以下"当社"、 "XXX" ) .addAttribute( "バージョン"、 "1.0" ); 要素のSignatureMethod = SignedInfo.addElement( "OFD:のSignatureMethod" ); SignatureMethod.setText( "123456789" )。 要素SignatureDataTime = SignedInfo.addElement( "OFD:SignatureDataTime" ); SignatureDataTime.setText( "= SignedInfo.addElement( "OFD:リファレンス" ) .addAttribute( "FileRef"、 "文件地址" )。 要素CheckValue = Reference.addElement( "OFD:CheckValue" ); CheckValue.setText( "qqqqqqqqqqqqqqqqqqqqq" ); 素子StampAmot = SignedInfo.addElement( "OFD:StampAmot" ) .addAttribute( "PAGEREF"、 "1" ) .addAttribute( "ID"、 "インデックス" ) .addAttribute( "境界"、 "10.0 20.0 30.0 40.0" )。)。 BaseLoc.setText( "Seal.esl" ); 要素SignedValue = root.addElement( "OFD:SignedValue" ); SignedValue.setText( "SignedValue.dat" ); リターンドキュメント; } }