如何在java中打印XML标记中的值

如何在java中打印XML标记中的值,java,xml,Java,Xml,我从来都不知道如何使用XML标记。如何遍历节点并在XML标记中打印特定节点。下面是XML文件 <Employees> <Employee> <Gender></Gender> <Name> <Firstname></Firstname> <Lastname></Lastname> </Name> <Email

我从来都不知道如何使用XML标记。如何遍历节点并在XML标记中打印特定节点。下面是XML文件

<Employees>
<Employee>
    <Gender></Gender>
    <Name>
        <Firstname></Firstname>
        <Lastname></Lastname>
    </Name>
    <Email></Email>
    <Projects>
        <Project></Project>
    </Projects>
    <PhoneNumbers>
        <Home></Home>
        <Office></Office>
    </PhoneNumbers>
</Employee>
我想打印性别和lastname值。我如何解析Name标签中的标签,而Name标签又位于Employee标签中


问候。

您应该使用XPATH。这是一个很好的解释

试试这个

    String expression = "/Employees/Employee/Gender"; //read Gender value

    NodeList nList = (NodeList) xPath.compile(expression).evaluate(document, XPathConstants.NODESET);
    for (int j = 0; nList != null && j < nList.getLength(); j++) {
        Node node = nList.item(j);
        System.out.println("" + node.getFirstChild().getNodeValue());
    }

    expression = "/Employees/Employee/Name/Lastname"; //read Lastname value

    nList = (NodeList) xPath.compile(expression).evaluate(document, XPathConstants.NODESET);
    for (int j = 0; nList != null && j < nList.getLength(); j++) {
        Node node = nList.item(j);
        System.out.println("" + node.getFirstChild().getNodeValue());
    }
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(<uri_as_string>);
XPathFactory xPathfactory = XPathFactory.newInstance();
XPath xpath = xPathfactory.newXPath();
XPathExpression expr = xpath.compile(<xpath_expression>);
    String expression = "/Employees/Employee/Gender"; //read Gender value

    NodeList nList = (NodeList) xPath.compile(expression).evaluate(document, XPathConstants.NODESET);
    for (int j = 0; nList != null && j < nList.getLength(); j++) {
        Node node = nList.item(j);
        System.out.println("" + node.getFirstChild().getNodeValue());
    }

    expression = "/Employees/Employee/Name/Lastname"; //read Lastname value

    nList = (NodeList) xPath.compile(expression).evaluate(document, XPathConstants.NODESET);
    for (int j = 0; nList != null && j < nList.getLength(); j++) {
        Node node = nList.item(j);
        System.out.println("" + node.getFirstChild().getNodeValue());
    }