Reading XML data into text file

淺唱寂寞╮ 提交于 2020-01-25 11:25:28

问题


I am very new for coding, can any one please help me in correcting my code. I need to read XML Data and store the data in text file. Each value must be separated by comma and once the data for one record is read it need to go for next line and execute another record.

Sample XML file:

<?xml version="1.0" encoding="UTF-8"?>
 <xml_tool xmlns:md="http://www.example.com/XT/1.0/">  
    <md:header>       
          <md:application_version>1.0</md:application_version>      
         <md:export_date>19-04-2012</md:export_date>   
          <md:export_time>14:55</md:export_time>   
          <md:export_user>USER01</md:export_user> 
    </md:header>   
    <md:table table_name="CUSTOMER" key="customer number" record_count="2" column_count="5">  
          <md:record>   
                                        <md:column name="customer_number">123456</md:column>   
                                         <md:column name="reg_date">01-04-2012</md:column>   
                                          <md:column name="customer_name">Test Customer</md:column>  
                                          <md:column name="customer_type">Normal </md:column> 
                                          <md:column name="comments">This is a test record</md:column>       
            </md:record>     
             <md:record>             
                                           <md:column name="customer_number">555111</md:column>   
                                            <md:column name="reg_date">02-04-2012</md:column>        
                                            <md:column name="customer_name">Test Customer</md:column>     
                                            <md:column name="customer_type"> </md:column>            
                                             <md:column name="comments">This is a test record</md:column>         
                </md:record>     
      </md:table>
</xml_tool

My code:

import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import org.w3c.dom.Element;
import java.io.*;

public class ParseXML {

    public static void main(String argv[])throws IOException {

         try {     
             BufferedWriter writer = new BufferedWriter(new FileWriter("results/staff.txt")); 
             File fXmlFile = new File("data/hardware-info.xml");  

             DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();  
             DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();      
             Document doc = dBuilder.parse(fXmlFile);      
             doc.getDocumentElement().normalize();    
             NodeList nList = doc.getElementsByTagName("md:record");     
             for (int i = 0; i < nList.getLength(); i++) 
             {      
                 Node node = nList.item(i);    
                 if (node.getNodeType() == Node.ELEMENT_NODE)    
                 {         
                      Element eElement = (Element) node; 
                     if(eElement.hasChildNodes())    
                     {               
                         NodeList nl = node.getChildNodes();      
                         for(int j=0; j<nl.getLength(); j++)  
                         {                   
                             Node nd = nl.item(j);   
                             String name= nd.getTextContent();
                                f (name != null && !name.trim().equals(""))                                 {
                                    System.out.print(name.trim()+",");   
                                    //System.out.print(" ");
                                    writer.write(nd.getTextContent().trim() + " ");
                                }

                         } 
                         System.out.println("");
                         writer.write("\n");
                         }        
                         } }  
             writer.close();
             } 
         catch (Exception e) {       
                         e.printStackTrace();     } } 
    @SuppressWarnings("unused")
    private static String getTagValue(String sTag, Element eElement)
    {        
        NodeList nlList = eElement.getElementsByTagName(sTag).item(0).getChildNodes();  
        Node nValue = (Node) nlList.item(0);       
        return nValue.getNodeValue();     
        } 
}

Output for this code:

123456,01-04-2012,Test Customer,Normal,,This is a test record,
555111,02-04-2012,Test Customer,This is a test record,

Expected output:

123456,01-04-2012,Test Customer,Normal,This is a test record
555111,02-04-2012,Test Customer, ,This is a test record

回答1:


change if (name != null) to

if (name != null && !name.trim().equals(""))




回答2:


I suspect this is your problem:

String name = nd.getTextContent();
if (name != null)

You might instead want:

String name = nd.getTextContent();
if (name != null && name.length() > 0)


来源:https://stackoverflow.com/questions/11790153/reading-xml-data-into-text-file

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!