gpt4 book ai didi

java - java中特定元素的XML解析

转载 作者:行者123 更新时间:2023-12-02 11:39:08 25 4
gpt4 key购买 nike

最近我尝试解析一个 XML 文件来对其进行一些测试。

我设法读取了 XML 文件,但我很难找到我想要读取的元素。

我的 XML 文件如下所示:

<Information1>
<Information1> Lot of elements here
<Info2>
<Info3>
<BlockElement1>
<sBlockElement1> sElement1 </sBlockElement1>
<sBlockElement2> sElements2 </sBlockElement2>
<sBlockElement2> sElements2 </sBlockElement2> !it has the same name but different values than the one above
</BlockElement1>
<BlockElement1>
<sBlockElement1> sElement1 </sBlockElement1>
<sBlockElement2> sElements2 </sBlockElement2>
<sBlockElement2> sElements2 </sBlockElement2> !it has the same name but different values than the one above
</BlockElement1>
<BlockElement1>
<sBlockElement1> sElement1 </sBlockElement1>
<sBlockElement2> sElements2 </sBlockElement2>
<sBlockElement2> sElements2 </sBlockElement2> !it has the same name but different values than the one above
</BlockElement1>
</Info3></Info2></Information1></Information1>

我正在尝试访问 BlockElement1 并从 sBlockElement(i) 中提取数据,其中 i=1,2

我的代码:

public static void main(String[] args) {
try {
Audiogramcurve aud=new Audiogramcurve();
File fXmlFile = new File("C:\\Users\\UserNamer\\Desktop/My.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder;
dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
doc.getDocumentElement().normalize();

System.out.println("Root element :" + doc.getDocumentElement().getNodeName());

NodeList nList = doc.getElementsByTagName("Info3");
for(int i=0;i<nList.getLength();i++) {
Node nNode = nList.item(i);
System.out.println("\nCurrent Element :" + nNode.getNodeName());

NodeList nListPoints = doc.getElementsByTagName("BlockElement1");

for(int tT=0;tT<nListPoints.getLength();tT++) {
Node nNodePoint = nListPoints.item(tT);
System.out.println(nNodePoint.getNodeName());
NodeList audMesList=doc.getElementsByTagName("sBlockElement1");
NodeList tonPointList=doc.getElementsByTagName("sBlockElement2");
//System.out.println(tonPointList.getLength());
for(int audI=0;audI<tonPointList.getLength();audI++) {
Node nNodeAud = tonPointList.item(audI);
System.out.println(nNodeAud.getNodeName());
}


}
}


} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} `

错误可能就在这里:NodeList nListPoints = doc.getElementsByTagName("BlockElement1"); 但我找不到从 NodeList 获取下一个名为 BlockElement1 的 Element 的方法。 (我知道这从一开始就需要元素)。

问题是它返回每个 sBlockElement1,而不是 BlockElement1 的特定值

谢谢!

最佳答案

您的 xml 中似乎没有任何 namespace ,因此您应该考虑使用 XPath,因为它(至少对我来说)非常易于使用! More info about XPath here

这是一个我认为有用的示例:

XPath xPath = XPathFactory.newInstance().newXPath();
String expression = "/Information1/Information1/Info2/Info3/BlockElement1/";

NodeList nodeList = (NodeList) xPath.evaluate(expression, document, XPathConstants.NODESET);

关于java - java中特定元素的XML解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48710928/

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