Вы можете использовать xpath для поиска определенных частей XML-документа
File fXmlFile = new File("C:\\Users\\User\\Desktop\\Temp\\ReadXml\\staff.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
// Create XPathExpression
XPathFactory xpathFactory = XPathFactory.newInstance();
XPath xpath = xpathFactory.newXPath();
XPathExpression expr =
xpath.compile("/Address/P[@type='MAC-Address']/text()");
// evaluate the Xpath and return result as a string.
String mac = (String) expr.evaluate(doc, XPathConstants.STRING);
System.out.println("MAC: " + mac);
Все классы Xpath относятся к пакету java.xml.xpath
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathFactory;
Если вы хотите перемещаться по узлам, вы можете. Вам не нужно нормализовать документ, но вам нужно использовать элемент документа, а не просто документ, когда вы ищете узлы. Вы можете получить все теги «P» и найти MAC-адрес. Что-то вроде:
NodeList nList = doc.getDocumentElement().getElementsByTagName("P");
for (int temp = 0; temp < nList.getLength(); temp++) {
Node nNode = nList.item(temp);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
if ("MAC-Address".equals(eElement.getAttribute("type"))) {
System.out.println("MAC: " + eElement.getTextContent());
}
}
}