Java 如何获取XML中特定标记的列表

Java 如何获取XML中特定标记的列表,java,android,xml,parsing,Java,Android,Xml,Parsing,所以我基本上想得到我搜索的特定标签的数据。我想通过gridnumber搜索房间标签。例如,如果输入0,我想在房间标签中搜索值为0的gridnum标签。在找到匹配的标记后,我希望能够返回特定标记(房间)的嵌套数据。输入0应搜索并查找值为0的标记gridnum,并返回name、floor,以及嵌套在该房间标记中的所有其他标记的值。包括标签内的mac地址列表 我试过这样做: InputStream is=mycontext.getAssets().open(“InputStream.xml”); Do

所以我基本上想得到我搜索的特定标签的数据。我想通过
gridnumber
搜索房间标签。例如,如果输入0,我想在房间标签中搜索值为0的
gridnum
标签。在找到匹配的标记后,我希望能够返回特定标记(房间)的嵌套数据。输入0应搜索并查找值为0的标记
gridnum
,并返回
name
floor
,以及嵌套在该房间标记中的所有其他标记的值。包括标签内的
mac地址列表

我试过这样做:

InputStream is=mycontext.getAssets().open(“InputStream.xml”);
DocumentBuilderFactory dbFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder=dbFactory.newDocumentBuilder();
Document doc=dBuilder.parse(is);
Element=doc.getDocumentElement();
元素。normalize();
NodeList nList=doc.getElementsByTagName(“房间”);
但是我对XML不太了解,所以我不知道如何继续使用它。如果有人能帮我,我将不胜感激

这是XML文件:


0
G-04
1.
等级
58B6330C6EC8=47
58B6330C6DF4=39
58B6330CJ788=35
58B6330C67GG=30
58B6330C0099=25
1.
G-04
1.
等级
58B6330C6EC8=47
58B6330C6DF4=39
58B6330CJ788=35
58B6330C67GG=30
58B6330C0099=25
2.
G-04
1.
等级
58B6330C6EC8=47
58B6330C6DF4=39
58B6330CJ788=35
58B6330C67GG=30
58B6330C0099=25
3.
G-04
1.
等级
58B6330C6EC8=47
58B6330C6DF4=39
58B6330CJ788=35
58B6330C67GG=30
58B6330C0099=25
4.
G-04
1.
账户
58B6330C6EC8=47
58B6330C6DF4=39
58B6330CJ788=35
58B6330C67GG=30
58B6330C0099=25
5.
G-04
1.
账户
58B6330C6EC8=47
58B6330C6DF4=39
58B6330CJ788=35
58B6330C67GG=30
58B6330C0099=25

使用
XPath
简化了这类工作。 阅读有关XPath的更多信息

这就是如何将其应用于xml

FileInputStream fileIS = new FileInputStream("indoor.xml");
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = builderFactory.newDocumentBuilder();
Document xmlDocument = builder.parse(fileIS);

XPath xPath = XPathFactory.newInstance().newXPath();
String expression = "/room-info/room[gridnum=" + "'" + GRID_NUM + "'" + "]";
Node node = (Node) xPath.compile(expression).evaluate(xmlDocument, XPathConstants.NODE);

使用
XPath
可以简化这类工作。 阅读有关XPath的更多信息

这就是如何将其应用于xml

FileInputStream fileIS = new FileInputStream("indoor.xml");
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = builderFactory.newDocumentBuilder();
Document xmlDocument = builder.parse(fileIS);

XPath xPath = XPathFactory.newInstance().newXPath();
String expression = "/room-info/room[gridnum=" + "'" + GRID_NUM + "'" + "]";
Node node = (Node) xPath.compile(expression).evaluate(xmlDocument, XPathConstants.NODE);