Advertisement
Guest User

Untitled

a guest
Jul 16th, 2013
247
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.32 KB | None | 0 0
  1.  
  2. import java.io.File;
  3. import java.io.PrintStream;
  4. import java.util.logging.Level;
  5. import java.util.logging.Logger;
  6. import javax.xml.parsers.DocumentBuilder;
  7. import javax.xml.parsers.DocumentBuilderFactory;
  8. import javax.xml.parsers.ParserConfigurationException;
  9.  
  10. import org.w3c.dom.*;
  11. import org.w3c.dom.NodeList;
  12.  
  13. public class Main {
  14.  
  15.     public static void main(String args[]) {
  16.  
  17.         try {
  18.             File file = new File("D:\\parse.xml");
  19.             File out = new File("D:\\parseXXX.xml");
  20.             System.setOut(new PrintStream(out));
  21.             DocumentBuilder dBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
  22.  
  23.             Document doc = dBuilder.parse(file);
  24.  
  25.             NodeList nodelist_of_p = doc.getElementsByTagName("p");
  26.  
  27.             int count = 1;//count for sn
  28.             boolean hasMultiple = false;
  29.             for (int i = 0; i < nodelist_of_p.getLength(); i++) {
  30.                 String word = "", def = "";
  31.  
  32.                 StringBuilder sb = new StringBuilder("");
  33.                 //Node node = nodelist_of_p.item(i); // each p
  34.  
  35.                 NodeList nodelist_under_p = nodelist_of_p.item(i).getChildNodes(); //elements under p
  36.  
  37.  
  38.                 for (int c = 0; c < nodelist_under_p.getLength(); c++) {
  39.                     Node items_under_p = nodelist_under_p.item(c);
  40.                     if (items_under_p.getNodeName().equals("sn")) {
  41.                         hasMultiple = true;
  42.                         int x;
  43.                         for (x = i, count = 1; x < nodelist_of_p.getLength(); x++, count++) {
  44.  
  45.                             sb.append("<sn>").append(count).append("</sn>");
  46.                             //c++;
  47.                             NodeList def_of_sn;
  48.                             def_of_sn = nodelist_of_p.item(x).getChildNodes();
  49.                             sb.append("<mdef>").append(extractDefofSN(def_of_sn)).append("</mdef>");
  50.                             NodeList p = nodelist_of_p.item(x + 1).getChildNodes();
  51.                             if (!containsNode(p, "sn")) {
  52.                                 break;
  53.                             }
  54.                            
  55.                         }
  56.                         i = x;
  57.  
  58.                     } else if (items_under_p.getNodeName().equals("hw")) {
  59.                         word = items_under_p.getTextContent();
  60.                         //temp.setTextContent(discardSym(word));
  61.                         hasMultiple = false;
  62.                         count = 1;
  63.  
  64.                     } else if (items_under_p.getNodeName().equals("def")) {
  65. //                        hasMultiple = false;
  66.                         def = items_under_p.getTextContent();
  67.  
  68.                     }
  69.                 }
  70.                 System.out.print("<body>");
  71.                 System.out.print("<word>");
  72.                 System.out.print(discardSym(word));
  73.                 System.out.print("</word> ");
  74.                 if (hasMultiple) {
  75.                     System.out.print(sb.toString());
  76.                     // hasMultiple = false;
  77.                 } else {
  78.                     System.out.print("<def>");
  79.                     System.out.print(def);
  80.                     System.out.print("</def>");
  81.                 }
  82.                 System.out.println("</body>");
  83.                 //to clear the StringBuilder
  84.               /*  int l = sb.length();
  85.                  sb.delete(0, l);
  86.                  */
  87.  
  88.  
  89.             }
  90.  
  91.  
  92.         } catch (Exception ex) {
  93.             Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
  94.         }
  95.     }
  96.  
  97.     static String discardSym(String str) {
  98.         String ret = "";
  99.         for (int i = 0; i < str.length(); i++) {
  100.             if (Character.isAlphabetic(str.charAt(i))) {
  101.                 ret = ret + str.charAt(i);
  102.             }
  103.         }
  104.         return ret;
  105.     }
  106.  
  107.     static boolean containsNode(NodeList n, String tag) {
  108.         for (int v = 0; v < n.getLength(); v++) {
  109.             if (n.item(v).getNodeName().equals(tag)) {
  110.                 return true;
  111.             }
  112.         }
  113.         return false;
  114.     }
  115.     static String extractDefofSN(NodeList n){
  116.        
  117.         for(int i=0; i<n.getLength(); i++){
  118.             if(n.item(i).getNodeName().equals("def"))
  119.                 return n.item(i).getTextContent();
  120.         }
  121.         return "NULL";
  122.     }
  123. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement