JAVA DOM XML Parse

时间:2015-10-14 10:56:44

标签: java xml dom

我有一个我要解析的大型XML文件

XML - XML文件包含300多个案例和其他标记 我只对这些案件感兴趣。我想要的是将案例标记中的所有案例和所有内容保存在一个只保存案例的新DOM文档中,一旦我有了这个新DOM,我想将它发送到另一个将获取信息和格式的类它变成了一个word文档(但是一旦我到达那里我就会知道)

我的XML的一个例子是

   <suite>
<cases>
    <case>
        <id/>
        <title/>
        <type/>
        <priority/>
        <estimate/>
        <references/> 
        <custom>
            <functional_area/>
            <technology_dependence/>
            <reviewed/>
            <steps_completed>
            </steps_completed>
            <preconds> </preconds>
            <steps_seperated>
                <step>
                    <index/>
                    <content>
                    </content>
                    <expected>
                    </expected>
                </step>
                <step>
                    <index/>
                    <content>
                    </content>
                    <expected>
                    </expected>
                </step>
                <step>
                </steps_seperated>
            </custom>
        </case>
    </suite>
</cases>

这些案例节点大约有400个

我的java

设置初始

  private void setXMLdoc(String path){
     xmlDoc = getDocument(path) ;

}

获取xml文件

private Document getDocument(String path) {
    try{
        DocumentBuilderFactory  factory = DocumentBuilderFactory.newInstance();
        factory.setIgnoringComments(true);
        factory.setIgnoringElementContentWhitespace(true);
        DocumentBuilder builder = factory.newDocumentBuilder();

         return builder.parse(path);

    } catch (ParserConfigurationException ex) {
        Logger.getLogger(ImportXML.class.getName()).log(Level.SEVERE, null, ex);
    } catch (SAXException ex) {
        Logger.getLogger(ImportXML.class.getName()).log(Level.SEVERE, null, ex);
    } catch (IOException ex) {
        Logger.getLogger(ImportXML.class.getName()).log(Level.SEVERE, null, ex);
    }  

   return null; 

  }    

这会创建一个仅包含案例的新文档吗?

NodeList fList = xmlDoc.getElementsByTagName("case");

我如何用案例打印出所有元素? /打印出包含所有案例的所有元素

提前致谢 - 即使这个问题没有意义或似乎有点基本,我还是很新的很抱歉

1 个答案:

答案 0 :(得分:1)

大致的代码是

DOMParser parser=new DOMParser();
InputSource source=new InputSource(<the XML file/network stream>);
parser.parse(source);
Element docElement=parser.getDocument().getDocumentElement();
XPath xPath=xPathFactory.newXPath();
XPathExpression expression_=xPath.compile("//case");
NodeList list_=(NodeList)expression_.evaluate(docElement,XPathConstants.NODESET);DocumentBuilder documentBuilder=DocumentBuilderFactory.newInstance().newDocumentBuilder();
    Document newDocument=documentBuilder.newDocument();
    Element newElement=newDocument.createElement("SOME_NAME");
    newDocument.appendChild(newElement);
    for(int i=0;i<list_.getLength();i++){Node n=newDocument.importNode(list_.item(i),true);newElement.appendChild(n);}
然后发送&#39; newDocument&#39;到另一个班级