我正在用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:
<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>
据我了解标准,&#39;&lt;&#39;和&#39;&amp;&#39;需要被转义(&#39;&gt;&#39;可能应该是),但是引号和撇号不是(除非它们属于属性),但是当这张卡的问题和答案是解析后,它们分别为What is the entity reference for '
和&
;
输入似乎遵循标准。 java XMLDom实现真的不符合标准,还是我错过了什么?
我发现很难相信我是唯一一个遇到过这个问题的人,但是我搜索了谷歌和堆栈溢出的情况,发现很少有直接相关性。
感谢您的帮助!
罗布
编辑:我刚刚意识到该文件有一个!DOCTYPE,但不是以<?xml
标记开头。
我想知道这是否有所不同。
答案 0 :(得分:0)
来自标准:
在元素的内容中,字符数据是任何不包含任何标记的起始分隔符的字符串
这意味着“或”必须在元素的内容中进行转义。