我有这段代码:
import java.net.URL;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
public class Main {
private static Document loadTestDocument(String url) throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
return factory.newDocumentBuilder().parse(new URL(url).openStream());
}
public static void main(String[] args) throws Exception {
Document doc = loadTestDocument("https://www.w3schools.com/xml/note.xml");
System.out.println(doc.getElementsByTagName("note").item(0).getChildNodes().item(0).getNodeValue());
}
}
并且就我而言,这应该将节点文本打印到java控制台,但它似乎什么都不打印......没有任何错误或任何错误。 我做错了什么?
答案 0 :(得分:1)
执行以下操作以获取文本内容
doc.getElementsByTagName("note").item(0).getChildNodes().item(0).getTextContent()
修改强> 试试这个,有一些空节点。
int i;
for(i = 0; i < doc.getElementsByTagName("note").item(0).getChildNodes().getLength(); i++){
System.out.println(doc.getElementsByTagName("note").item(0).getChildNodes().item(i).getTextContent());
}
答案 1 :(得分:1)
零项是注意。它没有价值。使用上面的代码来打印Tove
System.out.println(doc.getElementsByTagName("note").item(0).getChildNodes().item(1).getTextContent());
答案 2 :(得分:1)
试试这个。
Document doc = loadTestDocument("https://www.w3schools.com/xml/note.xml");
doc.getDocumentElement().normalize();
Element element =(Element)doc.getElementsByTagName("note").item(0);
System.out.println(element.getElementsByTagName("to").item(0).getTextContent());
System.out.println(element.getElementsByTagName("from").item(0).getTextContent());
<强>输出:强>
托弗
贾尼
答案 3 :(得分:1)
使用另一个api Jsoup,我们可以解析xml并在控制台上将整个xml打印为字符串
使用以下代码段尝试此操作:
org.jsoup.nodes.Document document = Jsoup.parse(new URL("https://www.w3schools.com/xml/note.xml"), 5000);
System.out.println("XML content : "+document.html());
输出:
<note>
<to>
Tove
</to>
<from>
Jani
</from>
<heading>
Reminder
</heading>
<body>
Don't forget me this weekend!
</body>
</note>