Here is my xml file:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE Server SYSTEM "Server.dtd">
<Server>
<MaximumUserNumber>2</MaximumUserNumber>
<ServerPortNumber>1234</ServerPortNumber>
<MessagesQueueSize>5</MessagesQueueSize>
</Server>
here is my Server.dtd:
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT Server
(MaximumUserNumber,
ServerPortNumber,
MessagesQueueSize)>
<!ELEMENT MaximumUserNumber (#PCDATA)>
<!ELEMENT ServerPortNumber (#PCDATA)>
<!ELEMENT MessagesQueueSize (#PCDATA)>
Here is my code that gives me a NullPointerException:
public Server() {
try {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setValidating(true);
Document document = dbf.newDocumentBuilder().parse("config.xml");
document.normalizeDocument();
NodeList nl = document.getElementsByTagName("MaximumUserNumber");
nl.item(0); // this line causes exception
}
}
What I'm doing wrong? Thanks!
config.xmlwhich is actually processed by your code is really the intended version. Are you really sure, that your document is validated against the version of DTD you thought? Anyway you should check the length of yourNodeListbefore callingnl.item(0). Obviously in your case the length is 0. If you create an independent test project only with these code snippets, do you still get length 0?