org.dom4j.IllegalAddException:いいえ、そのような名前空間接頭辞:([:]ラベルで、dom4jの書き込みXMLファイル(コロン)溶液)org.dom4j.tree.DefaultElement:***上のスコープ内にあります

そのような名前空間接頭辞: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" );
        リターンドキュメント; 
    } 

}

 

おすすめ

転載: www.cnblogs.com/fengqiyuanLK/p/10951148.html