1

子とその子にも名前空間を設定する必要がありますが、同じ名前空間に属性を付けると、サブ子には名前空間がありません。

私はそのようなものが必要です:

<?xml version="1.0" encoding="UTF-8"?>
<nfeProc xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00">
    <NFe xmlns="http://www.portalfiscal.inf.br/nfe">
        <infNFe versao="2.00" Id="NFe35120810609770000190550010000011151000011155">
            ...

しかし、私のコードはこれだけを生成しています:

<?xml version="1.0" encoding="UTF-8"?>
<nfeProc xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00">
    <NFe>
        <infNFe versao="2.00" Id="NFe35120810609770000190550010000011151000011155">
            ...

XML のこの部分を生成するコードは次のとおりです。

Document doc = new Document();
Namespace portal = Namespace.getNamespace( "http://www.portalfiscal.inf.br/nfe" );

Element tagNfeProc = new Element( "nfeProc", portal );
tagNfeProc.setAttribute( "versao", "2.00" );

Element tagNFe = new Element( "NFe", portal );

...

tagNfeProc.getChildren().add( tagNFe );

doc.setRootElement( tagNfeProc );
4

1 に答える 1

0

本当に追加したい場合は、手動で行う必要があります。前述の「setAttribute」メソッドを使用してください。

それ以外の場合:
'NFe' タグは名前空間属性を再度必要としません。その名前空間は既に上位レベル (この例ではトップレベル) で宣言されており、宣言したブロック全体で使用 (継承) されるためです。それ。

少し検索した後、 XML名前空間について簡単に説明します:)

于 2013-05-08T12:09:40.480 に答える