Я пытаюсь преобразовать XML String
в XML document
:Java - разбор строки для вывода XML - #text
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
try {
builder = factory.newDocumentBuilder();
Document document = builder.parse(new InputSource(new StringReader(xmlString)));
NodeList firstEle = document.getElementsByTagName("eMail");
for(int i = 0; i < firstEle.getLength();i++){
Node node = firstEle.item(i); //email
System.out.println("\ncurrent element : " + node.getNodeName()); //print email
NodeList allEmailChilds = node.getChildNodes();
System.out.print("num of child nodes : " + allEmailChilds.getLength());//print 47
for(int j = 0 ; j<allEmailChilds.getLength(); j++){
Node inMail = allEmailChilds.item(j);
System.out.print("\n");
System.out.print("email element - " + inMail.getNodeName()); //prints #text
System.out.print("email value - " + inMail.getTextContent()); //prints empty line
}
}
} catch (Exception e) {
e.printStackTrace();
}
Сомон знает, почему это напечатать #text
instaed из nodeName
? Я не мог найти ответ на этот где-нибудь, вот мой XML:
<?xml version="1.0" encoding="UTF-8"?>
<eMail>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
//more elemnts.....
</eMail>
Кроме того, при попытке получить тип узла:
if(inMail.getNodeType() == Node.ELEMENT_NODE){
System.out.print("ele node"); // never prints
}
Никогда не печатается.
'# text' - это имя узла чистого текста, что обозначает _between_ начальный и конечный тег (« Tove »). Имейте в виду, что между начальным и конечным тегами («Кому») может быть более одного # текста. Обратите внимание, что 'node' может быть передан в' org.w3c.Element', поскольку теги являются тегами. –
ОК, спасибо, я думаю, что объектом элемента является проблема. –