我有 XML 檔案:
<?xml version="1.0" encoding="UTF-8"?>
<questions>
<question>
<name>First question</name>
<true>2</true>
<answers>
<answer>First answer</answer>
<answer>Second answer</answer>
<answer>Third answer</answer>
<answer>Fourth answer</answer>
</answers>
</question>
<question>
<name>Second question</name>
<true>3</true>
<answers>
<answer>First answer</answer>
<answer>Second answer</answer>
<answer>Third answer</answer>
<answer>Fourth answer</answer>
</answers>
</question>
</questions>
為什么在執行下面的 Java 代碼時,它回傳 9 個元素而不是 4 個,并且錯誤的 5 個元素包含一個換行符和 3個在 XML 中的<answers>和<answer>(一)、</answer>和<answer>(三)</answer>和</answers>(一)之間的制表符:
File file = new File(path);
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document doc = documentBuilder.parse(file);
NodeList answers = doc.getElementsByTagName("answers").item(n).getChildNodes();
接下來,我做一個檢查以切斷錯誤的元素:
if (answers.item(i).getTextContent().trim().length() > 0)
如果您能告訴我更好的方法,我將不勝感激。
uj5u.com熱心網友回復:
它沒有回傳 9 個元素- 它回傳了 9 個節點,這是正確的。(畢竟,您要求的是answers元素的子節點。)那些只有空格的文本節點是有效節點。如果你想要元素,只需忽略任何Node.getNodeType()不回傳的節點Node.ELEMENT_NODE。
另外,只需撥打getElementsByTagName("answer")該上answers元素得到公正的元素。假設您很樂意忽略任何非answer元素。例如:
Element answersElement = (Element) doc.getElementsByTagName("answers").item(n);
NodeList answerElements = answersElement.getElementsByTagName("answer");
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/383947.html
上一篇:XSD覆寫父級
