How can I simplify a mess of code when I'm on node of elements? My code looks like:
private void readXmldata(String xml_debug_settings)
{
File xml_debug_settings_file = new File(xml_debug_settings);
if (xml_debug_settings_file.exists())
{
SAXReader saxReader = new SAXReader();
try {
Document document = saxReader.read(xml_debug_settings_file);
Element root = document.getRootElement();
Iterator itr = root.elements().iterator();
Element element =null;
while (itr.hasNext()) {
Element debel = (Element) itr.next();
if (debel.getName().equals("mainnode")) {
Iterator itrd = debel.elementIterator();
while (itrd.hasNext())
{
Element child = (Element) itrd.next();
System.out.println(child.getName());
if (child.getName().equals("node1"))
{
System.out.println(child.getText());
}
if (child.getName().equals("node2"))
{
System.out.println(child.getText());
}
if (child.getName().equals("node3"))
{
System.out.println(child.getText());
}
if (child.getName().equals("node4"))
{
System.out.println(child.getText());
}
if (child.getName().equals("node4"))
{
System.out.println(child.getText());
}
if (child.getName().equals("node5"))
{
System.out.println(child.getText());
}
}
}
}
} catch (DocumentException ex) {
Logger.getLogger(Debugsettings.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
I want less code of this example: (very mess and not properly clean a code):
if (child.getName().equals("node1"))
{
System.out.println(child.getText());
}
if (child.getName().equals("node2"))
{
System.out.println(child.getText());
}
if (child.getName().equals("node3"))
{
System.out.println(child.getText());
}
if (child.getName().equals("node4"))
{
System.out.println(child.getText());
}
if (child.getName().equals("node4"))
{
System.out.println(child.getText());
}
if (child.getName().equals("node5"))
{
System.out.println(child.getText());
}
Solved.
So, none of users recommend me for answer so I found solution.
public Map<String, String> readXmldata(String xml_debug_settings, String node)
{
File xml_debug_settings_file = new File(xml_debug_settings);
if (xml_debug_settings_file.exists())
{
SAXReader saxReader = new SAXReader();
try {
Document document = saxReader.read(xml_debug_settings_file);
//Document temp = DocumentHelper.parseText("");
Element root = document.getRootElement();
Iterator itr = root.elements().iterator();
Element element = null;
while (itr.hasNext()) {
Element debel = (Element) itr.next();
// System.out.println(debel.getName()); // node_name_1
if (debel.getName().equals(node)) {
Iterator itrd = debel.elementIterator();
while (itrd.hasNext())
{
Element child = (Element) itrd.next();
String name = child.getName(); // node_name_2
int nodecount = child.nodeCount();
for (int i=0; i<nodecount; i++)
{
xmlarray.put(name, child.getStringValue());
}
}
return this.xmlarray;
}
}
} catch (DocumentException ex) {
Logger.getLogger(Debugsettings.class.getName()).log(Level.SEVERE, null, ex);
}
}
else
{
JOptionPane.showMessageDialog(null, "Not exists:" + xml_debug_settings, "Failed to open xml", JOptionPane.WARNING_MESSAGE);
}
return null;
}
And grab a data like this:
Map<String, String> arrayList = xmlparser.readXmldata(this.xml_debug_settings, "someconfig");
System.out.prinln(arrayList.get("config1"));
Xml structure:
<document>
<someconfig>
<config1>value_of_config</config>
</someconfig>
</document>
Hope this someone to help.