Я до этого никогда не обрабатывал XML, поэтому я не уверен, как обрабатывать CDATA внутри XML-файла. Я теряюсь в узлах, родителях, дочерних узлах, nList и т. Д.Обработка CDATA из XML через DOM-парсер
Может ли кто-нибудь сказать мне, что моя проблема из этих фрагментов кода?
Мой метод getTagValue()
работает со всеми тегами, кроме «Детали», который содержит CDATA.
.....
NodeList nList = doc.getElementsByTagName("Assignment");
for (int temp = 0; temp < nList.getLength(); temp++) {
Node nNode = nList.item(temp);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
results = ("Class : " + getTagValue("ClassName", eElement)) +
("Period : " + getTagValue("Period", eElement)) +
("Assignment : " + getTagValue("Details", eElement));
myAssignments.add(results);
}
}
.....
private String getTagValue(String sTag, Element eElement) {
NodeList nlList = eElement.getElementsByTagName(sTag).item(0).getChildNodes();
Node nValue = (Node) nlList.item(0);
if((CharacterData)nValue instanceof CharacterData)
{
return ((CharacterData) nValue).getData();
}
return nValue.getNodeValue();
}
Помимо превосходного объяснения Богдана, если вы можете использовать Хом, dOM4J и т.д., вы, вероятно, будет лучше для него. –