所以我基本上想要获取我搜索的特定标签的数据。我想通过gridnumber搜索房间标签。例如,如果我给输入0,我想在房间标签中搜索值为0的gridnum标签。在找到匹配的标记后,我希望能够返回该特定标记(房间)的嵌套数据。输入0应该搜索并找到值为0标记gridnum,并为name、floor以及嵌套在房间标记中的所有其他标记返回值。在标记内包含一个mac-addresses列表。
我尝试过使用这种方式:
InputStream is = mycontext.getAssets().open("indoor.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(is);
Element element = doc.getDocumentElement();
element.normalize();
NodeList nList = doc.getElementsByTagName("room");但是我对XML了解不多,所以我不知道该怎么做。如果有人能帮我,我将不胜感激。
这是XML文件:
<?xml version = "1.0"?>
<room-info>
<room>
<gridnum>0</gridnum>
<name>G-04</name>
<floor>1</floor>
<category>Class</category>
<mac-addresses>
<mac>58B6330C6EC8=47</mac>
<mac>58B6330C6DF4=39</mac>
<mac>58B6330CJ788=35</mac>
<mac>58B6330C67GG=30</mac>
<mac>58B6330C0099=25</mac>
</mac-addresses>
</room>
<room>
<gridnum>1</gridnum>
<name>G-04</name>
<floor>1</floor>
<category>Class</category>
<mac-addresses>
<mac>58B6330C6EC8=47</mac>
<mac>58B6330C6DF4=39</mac>
<mac>58B6330CJ788=35</mac>
<mac>58B6330C67GG=30</mac>
<mac>58B6330C0099=25</mac>
</mac-addresses>
</room>
<room>
<gridnum>2</gridnum>
<name>G-04</name>
<floor>1</floor>
<category>Class</category>
<mac-addresses>
<mac>58B6330C6EC8=47</mac>
<mac>58B6330C6DF4=39</mac>
<mac>58B6330CJ788=35</mac>
<mac>58B6330C67GG=30</mac>
<mac>58B6330C0099=25</mac>
</mac-addresses>
</room>
<room>
<gridnum>3</gridnum>
<name>G-04</name>
<floor>1</floor>
<category>Class</category>
<mac-addresses>
<mac>58B6330C6EC8=47</mac>
<mac>58B6330C6DF4=39</mac>
<mac>58B6330CJ788=35</mac>
<mac>58B6330C67GG=30</mac>
<mac>58B6330C0099=25</mac>
</mac-addresses>
</room>
<room>
<gridnum>4<gridnum>
<name>G-04</name>
<floor>1</floor>
<category>Accounts</category>
<mac-addresses>
<mac>58B6330C6EC8=47</mac>
<mac>58B6330C6DF4=39</mac>
<mac>58B6330CJ788=35</mac>
<mac>58B6330C67GG=30</mac>
<mac>58B6330C0099=25</mac>
</mac-addresses>
</room>
<room>
<gridnum>5</gridnum>
<name>G-04</name>
<floor>1</floor>
<category>Accounts</category>
<mac-addresses>
<mac>58B6330C6EC8=47</mac>
<mac>58B6330C6DF4=39</mac>
<mac>58B6330CJ788=35</mac>
<mac>58B6330C67GG=30</mac>
<mac>58B6330C0099=25</mac>
</mac-addresses>
</room>
</room-info>发布于 2020-03-01 04:57:36
使用XPath简化了这类工作。阅读有关XPath here的更多信息。
这就是如何将其应用于您的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);https://stackoverflow.com/questions/60469485
复制相似问题