2015-04-06 119 views
0

可以引導我什麼是我可以在java中使用的最好的XML解析器?與DOM類似,我已經檢查過SAX,它不會幫助我。 另外我需要解析未知的XML並將該內容保存到文件中。所以JAXB也不會幫助我。java中的XML解析器;需要在JAVA中解析未知的XML

+0

您是否嘗試過內置於jdk中的stax解析器?你的意思是未知的XML?你如何處理你的XML標籤? – 2015-04-06 08:26:03

+0

如果您不知道XML中包含什麼內容,那麼解析會有什麼好處呢?請嘗試更詳細地解釋您的任務或問題。 – RealSkeptic 2015-04-06 08:32:11

+0

解析部分很簡單; ,解析器只需要有效的XML,它並不關心結構。 – 2015-04-06 08:40:14

回答

2

嗨下面類可以幫助您解析和處理收到的XML ..絕對增加進口,並與您的XML替換字符串..

public class XML { 
     public static void main (String[] args) throws Exception { 

      String xml = "<objects><student marks='one'/><student marks='two'/><school>Best school</school><teacher/></objects>"; 

      // parse the above xml 
      InputStream in = new ByteArrayInputStream(xml.getBytes("utf-8")); 
      Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(in); 

      // processing it 
      Node objects = doc.getDocumentElement(); 
      for (Node object = objects.getFirstChild(); object != null; object = object.getNextSibling()) { 
       if (object instanceof Element) { 
        Element e = (Element)object; 
        if (e.getTagName().equalsIgnoreCase("student")) { 
         String marks = e.getAttribute("marks"); 
         System.out.println("It's a " + marks + " student!"); 
        } else if (e.getTagName().equalsIgnoreCase("school")) { 
         String text = e.getTextContent(); 
         System.out.println("It's a school that says \"" + text + "\"."); 
        } else { 
         System.out.println("I don't know what a " + e.getTagName() + " is for."); 
        } 
       } 
      } 
     } 
    } 

您可以使用節點像getFirstChild方法( )和getNextSibling()遍歷子元素。如果您正在解析多個文檔,您可以繼續使用相同的DocumentBuilder