私のコードはしばらくの間正常に機能していました。いくつか変更したところ、正しくアンマーシャリングされなくなった整数のリストがいくつかあります。問題を取り除くために、すべてを次のように煮詰めましたが、問題は解決しません。
XML ファイルを、コンテンツ全体が含まれるテスト ファイルに減らしました。
<polylist>
<p>1 0 0 0 0 1 2 0 2 3 1 3 1 1 4 2 1 5</p>
</polylist>
私は自分の Java コードを、コンテンツ全体が含まれるテスト ファイルにまで減らしました。
import java.io.File;
import java.util.List;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "polylist")
public class PolyList
{
public List<Integer> p;
public static void main(String[] args) throws Exception
{
JAXBContext jaxbContext = JAXBContext.newInstance(PolyList.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
PolyList pl = (PolyList)unmarshaller.unmarshal(new File("ptest.xml"));
System.out.println(pl.p);
}
}
pl.p を印刷すると、期待され[1291596391]
たものとは異なる出力が得られ[1 0 0 0 0 1 2 ...]
ます。に変更public List<Integer> p;
すると、期待どおりpublic List<String> p;
に正しく出力[1 0 0 0 0 1 2 0 2 3 1 3 1 1 4 2 1 5]
されます。したがって、 a は正しく取得しますが、 は取得しList<String>
ませんList<Integer>
。List<Integer>
数日前に完全な本番プロジェクトで正常に機能していましたが、もう機能していません。
(編集) 実際、このList<String>
バージョンも動作していません。数字の間にコンマはありません。つまり、複数の文字列のリストが表示されていないことを意味し、各文字列は異なる数字を表しています。むしろ、全体を表す 1 つの String のままです。
それを指摘してくれてありがとう、ブレイズ。早く気が付かなかった私のミスです。