Я получил этот XML-файл, который не очень хорошо отформатированный, но мне нужно, чтобы разобрать этот anyhow.I попробовал все варианты разборе говорят DOM/SAX синтаксического анализа, но до сих пор не удалось достичь, Пробовал thisСинтаксический XML в Java
Так может ли кто-нибудь, пожалуйста, направить меня, как мне разобрать такие хорошо отформатированные XML-данные.
Вот XML-файл
<?xml version="1.0" ?>
<Employee>
<Name> Jack
<EMPID> EMP001 <Address> 12 CA, USA</Address>
</EMPID>
</Name>
</Employee>
Синтаксический Код
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory
.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
Document doc = docBuilder.parse(new File(
"new.xml"));
// normalize text representation
doc.getDocumentElement().normalize();
System.out.println("Root element of the doc is "
+ doc.getDocumentElement().getNodeName());
NodeList listOfPersons = doc.getElementsByTagName("NAME");
int totalPersons = listOfPersons.getLength();
for (int s = 0; s < listOfPersons.getLength(); s++) {
Node firstPersonNode = listOfPersons.item(s);
if (firstPersonNode.getNodeType() == Node.ELEMENT_NODE) {
Element firstPersonElement = (Element) firstPersonNode;
// -------
NodeList firstNameList = firstPersonElement
.getElementsByTagName("Name");
Element firstNameElement = (Element) firstNameList.item(0);
NodeList textFNList = firstNameElement.getChildNodes();
System.out
.println("Name : "
+ ((Node) textFNList.item(0))
.getNodeValue().trim());
// -------
NodeList lastNameList = firstPersonElement
.getElementsByTagName("EMPID");
Element lastNameElement = (Element) lastNameList.item(0);
NodeList textLNList = lastNameElement.getChildNodes();
System.out
.println("ID : "
+ ((Node) textLNList.item(0))
.getNodeValue().trim());
// ----
NodeList ageList = firstPersonElement
.getElementsByTagName("Address");
Element ageElement = (Element) ageList.item(0);
NodeList textAgeList = ageElement.getChildNodes();
System.out.println("Address : "
+ ((Node) textAgeList.item(0)).getNodeValue()
.trim());
}
}
} catch (SAXParseException err) {
System.out.println("** Parsing error" + ", line "
+ err.getLineNumber() + ", uri " + err.getSystemId());
System.out.println(" " + err.getMessage());
} catch (SAXException e) {
Exception x = e.getException();
((x == null) ? e : x).printStackTrace();
} catch (Throwable t) {
t.printStackTrace();
}
У вас неверный XML, поэтому я не думайте, что вы можете использовать стандартные парсеры Java XML для его анализа. –
Невозможно проанализировать неформатированный XML-файл. Над XML не имеет надлежащего формата. Исправь это. Java API позаботится об этом. Не пишите еще один Java API для чтения неправильного XML. – AmitG
Что значит «все варианты разбора»? Не могли бы вы объяснить немного больше о своем вопросе? – joragupra