0

したがって、私はDocumentBuilderFactoryとDocumentBuilderを使用してxmlを解析しています。つまり、DOMパーサーです。

しかし、私がやろうとしているのは、バイト配列データ(base64でエンコードされた画像)を抽出することです。

それを1つのオブジェクトに保存し、後でコードでbase64でエンコードされた別のxmlに書き込みます。

これをところで保存するための最良の方法は何ですか。文字列として保存しますか?またはByteArrayとして?

バイト配列データを最良の方法で抽出して書き出すにはどうすればよいですか。

私はこれを経験したことがないので、グループから意見を聞きたいと思いました。

更新:XMLが与えられましたbinary64でエンコードされた着信XMLを制御できません

< byte-array >
  ... base64 encoded image ...
< /byte-array >

パーサーを使用して、このノードを保存する必要があります。質問は、バイトまたは文字列で、新しいxmlで別のノードに書き出す必要があります。再びbase64エンコーディングで。

ありがとう

4

3 に答える 3

0

Apache Commonsには、Base64でデータの整合性を確保するのに役立つクラスがあります。

import org.apache.commons.codec.binary.Base64;

String yourString = "testing";
byte[] encoded = Base64.encodeBase64(yourString.getBytes());

http://commons.apache.org/codec/apidocs/org/apache/commons/codec/binary/Base64.html

ただし、Base64データはとに加えて単なる英字+/あるため、文字列に保存してもデータが失われることはありません。

于 2012-07-11T14:27:04.867 に答える
0

Base64 エンコーディングは、通常、http などのテキスト ベースのプロトコルでデータを転送する必要がある場合に使用されます。Base64エンコーディングが行うことは、バイナリデータを一連の文字にエンコードすることです。これは、エンコード/デコードの問題なしにテキストベースのプロトコルで送信できます。

xml をネットワーク経由で送信しているかどうかはわかりませんが、次のいずれかの方法を使用できます

  1. base64 文字列を単純な文字列として送信します。ただし、この場合、エンコードとデコードの責任は、アプリケーション プログラムの送信と受信になります。

  2. 標準base64Binary の xml タイプを使用します。この場合、パーサーが文字列のデコードを処理します。

于 2012-07-11T14:26:01.670 に答える
0

画像は、最初の xml に文字列として格納する必要があります。おそらく次のようなものです:

<img src="data:image/gif;base64,sssssssssssss"/>

2 番目の xml に同じデータを書き込む必要がある場合は、既にエンコードされている同じ文字列を使用してください。画像を変更する必要がある場合。属性を取得し ( element.getAttribute("src"))、多くのライブラリの 1 つ ( apache commons codec ) でデコードしてから、2 番目の xml の文字列として再エンコードします。

更新応答:

あなたの更新について。要素内には、<byte-array>プレーン テキストが必要です。テキストとして保存し、2 番目の xml でテキストとして使用できます。

于 2012-07-11T14:21:01.773 に答える