0

私は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>&amp;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 があることに気付きましたが、タグで始まっていません。
これで何か違いがあるのだろうか。

4

1 に答える 1

0

標準から:

要素のコンテンツでは、文字データは、マークアップの開始区切り文字を含まない文字列です。

これは、要素のコンテンツで'または"のいずれかをエスケープする必要があることを意味します。

于 2012-08-20T15:29:43.027 に答える