2015-04-06 107 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