我正在用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>
据我了解标准,'<' 和 '&' 需要转义('>' 可能应该是),但引号和撇号不需要(除非它们在属性中),但是当问题和答案时卡被解析,它们分别作为What is the entity reference for '
和出来&
;
输入似乎遵循标准。java XMLDom 实现真的不符合标准,还是我遗漏了什么?
我很难相信我是唯一一个遇到(有)这个问题的人,但是我搜索了谷歌和堆栈溢出,发现几乎没有直接相关性。
感谢您的任何帮助!
抢
编辑:我刚刚意识到该文件有一个!DOCTYPE,但不以<?xml
标签开头。
我想知道这是否有什么不同。