Давайте рассмотрим этот XML-файл:
<?xml version="1.0" encoding="UTF-8"?>
<root attribute="value">
<element>myElement</element>
</root>
Я пытаюсь проанализировать файл, используя JDOM для извлечения имени и значения атрибута из корневого элемента.
Это код, который я с ума схожу для этой цели:
public static org.jdom.Document document;
public static org.jdom.Element root;
SAXBuilder sxb = new SAXBuilder();
try
{
document = sxb.build(new File("file.xml"));
root = document.getRootElement();
List myList = root.getAttributes();
Iterator x = myList.iterator();
while(x.hasNext())
{
Attribute myAttribute = (Attribute)x.next();
System.out.println("name : " + myAttribute.getName() + " & value : " + myAttribute.getValue());
}
}
catch(Exception e){
e.printStackTrace();
}
Все отлично работает для этого XML-файла. Но когда я использую этот файл:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rootElement PUBLIC "-//Project" "mydtd.dtd">
<root attribute="value">
<element>myElement</element>
</root>
Я получаю Exception in thread "main" java.lang.NullPointerException
Как вы думаете, мне следует удалить DOCTYPE из файла xml перед его разбором и пропустить его после завершения разбора.
Или есть что-то еще, что я могу сделать в этой ситуации?
Спасибо