Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从XML文件中读取值_Java_Xml Parsing - Fatal编程技术网

Java 从XML文件中读取值

Java 从XML文件中读取值,java,xml-parsing,Java,Xml Parsing,我知道如何使用getelementbyTag读取Java中的简单XML文件,但我想从这里读取MAC地址,即Java中的01-0C-CD-01-00-34 我试图使用getElementsByTagName(“”),但是我应该传递什么参数来获取具有type=“MAC Address”的元素 010C-CD-01-00-34 000 4 0001 我目前的代码是: public static void main(String argv[]) { try { File fX

我知道如何使用
getelementbyTag
读取Java中的简单XML文件,但我想从这里读取MAC地址,即Java中的01-0C-CD-01-00-34

我试图使用
getElementsByTagName(“”)
,但是我应该传递什么参数来获取具有
type=“MAC Address”
的元素


010C-CD-01-00-34

000

4

0001

我目前的代码是:

public static void main(String argv[]) {
    try {
        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);

        doc.getDocumentElement().normalize();

        NodeList nList = doc.getElementsByTagName("Address");

        for (int temp = 0; temp < nList.getLength(); temp++) {
            Node nNode = nList.item(temp);

            if (nNode.getNodeType() == Node.ELEMENT_NODE) {
                Element eElement = (Element) nNode;
                System.out.println("MAC: " + eElement.getElementsByTagName("").item(0).getTextContent());
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}
publicstaticvoidmain(字符串argv[]){
试一试{
File fXmlFile=新文件(“C:\\Users\\User\\Desktop\\Temp\\ReadXml\\staff.xml”);
DocumentBuilderFactory dbFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder=dbFactory.newDocumentBuilder();
documentdoc=dBuilder.parse(fXmlFile);
doc.getDocumentElement().normalize();
NodeList nList=doc.getElementsByTagName(“地址”);
对于(int-temp=0;temp
您可以使用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;
如果要导航节点,可以。您不需要规范化文档,但在查找节点时,确实需要使用document元素,而不仅仅是doc。你可以得到所有的“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());
                }
            }
        }
NodeList nList=doc.getDocumentElement().getElementsByTagName(“P”);
对于(int-temp=0;temp
        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());
                }
            }
        }