私はJavaでAndroidアプリを書いています。アプリはフラッシュカードをエミュレートし、片側に質問、反対側に答えを表示します。
私は現在、次の(かなり標準的な)コードを使用して、整形式の(私が信じているように).xmlドキュメント(出力を問題なく読み戻すQtベースのプログラムによって生成されます)を丸呑みしています:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try
{
DocumentBuilder builder = factory.newDocumentBuilder();
Document dom = builder.parse(new File(diskLocation));
Element pack = dom.getDocumentElement();
NodeList flashCards = pack.getElementsByTagName("flashcard");
for (int i=0; i < flashCards.getLength(); i++)
{
FlashCard flashCard = new FlashCard();
Node cardNode = flashCards.item(i);
NodeList cardProperties = cardNode.getChildNodes();
for (int j=0;j<cardProperties.getLength();j++)
{
Node cardProperty = cardProperties.item(j);
String propertyName = cardProperty.getNodeName();
if (propertyName.equalsIgnoreCase("Question"))
{
flashCard.setQuestion(cardProperty.getFirstChild().getNodeValue());
}
else if (propertyName.equalsIgnoreCase("Answer"))
{
flashCard.setAnswer(cardProperty.getFirstChild().getNodeValue());
}
else if
...etc.
以下は、xml を学習するためのフラッシュカードです。
<flashcard>
<Question>What is the entity reference for ' " '?</Question>
<Answer>&quot;</Answer>
<Info></Info>
<Hint></Hint>
<KnownLevel>1</KnownLevel>
<LastCorrect>1</LastCorrect>
<CurrentStreak>4</CurrentStreak>
<LevelUp>4</LevelUp>
<AnswerTime>0</AnswerTime>
</flashcard>
私が標準を理解しているように、「<」と「&」はエスケープする必要がありますが (「>」はおそらくエスケープする必要があります)、引用符とアポストロフィはエスケープしません (属性に含まれている場合を除く)。 card が解析されWhat is the entity reference for '
、&
それぞれ および として出力されます。
入力は標準に従っているようです。Java XMLDom の実装は本当に標準に準拠していないのでしょうか、それとも何か足りないのでしょうか?
私だけがこの問題を抱えている (持っていた) と信じるのは非常に難しいと思いますが、Google とスタック オーバーフローの両方を検索しましたが、驚くほど直接的な関連性はほとんど見つかりませんでした。
助けてくれてありがとう!
ロブ
<?xml
編集:ファイルに !DOCTYPE があることに気付きましたが、タグで始まっていません。
これで何か違いがあるのだろうか。