gpt4 book ai didi

JAVA DOM XML 解析

转载 作者:行者123 更新时间:2023-12-01 11:04:06 24 4
gpt4 key购买 nike

我有一个大的 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");

另外,我如何打印出案例中待办事项的所有元素?/打印出所有情况下的所有元素 todo

提前致谢 - 我还很新,如果这个问题没有意义或看起来有点基本,那么很抱歉

最佳答案

大致的代码是

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);}

然后将“newDocument”发送给另一个类

关于JAVA DOM XML 解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33123507/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com