如何根据给定条件使用sax或dom解析xml的某些特定节点

时间:2013-08-28 15:21:01

标签: java xml dom sax

我是jaxp的新手,我坚持这个我必须使用sax或dom解析这个xml。 我必须要求用户输入empoyee代码,然后显示该特定员工的其他节点 for ex :如果用户输入101,那么我将显示

Ename:akshay
ecode:101
dp no.:10
mgr code=201

我尝试了很多但没有结果,有人可以提供帮助。

   <employees>
    <employee>
        <Ename>akshay</Ename>
        <Ecode>101</Ecode>
        <EmpSal>2100.0</EmpSal>
        <Department_code>10</Department_code>
        <Manager_code>201</Manager_code>
    </employee>
    <employee>
        <Ename>rahul</Ename>
        <Ecode>102</Ecode>
        <EmpSal>21000.0</EmpSal>
        <Department_code>20</Department_code>
        <Manager_code>202</Manager_code>
    </employee>
</employees>

我尝试解析此xml的代码

public class ParseUsingDom {
    public static void main(String[] args) {

        try {
            DocumentBuilderFactory factory = DocumentBuilderFactory
                    .newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document document = builder.parse("emp.xml");
            NodeList list = document.getElementsByTagName("*");
            int count = 0;
            {
            for (int i = 0; i < list.getLength(); i++) {
                Element element = (Element) list.item(i);
                String nodeName = element.getNodeName();

                if (nodeName.equals("employee")) {
                    count++;
                    System.out.println("Employee :" + count);
                } else if (nodeName.equals("Ename")) {
                    System.out.println("\tEname:\t"
                            + element.getChildNodes().item(0).getNodeValue());
                } else if (nodeName.equals("Ecode")) {
                    System.out.println("\tECode:\t"
                            + element.getChildNodes().item(0).getNodeValue());
                } else if (nodeName.equals("EmpSal")) {
                    System.out.println("\tEmpsal:\t"
                            + element.getChildNodes().item(0).getNodeValue());
                } else if (nodeName.equals("Department_code")) {
                    System.out.println("\tDepartment_code: "
                            + element.getChildNodes().item(0).getNodeValue());
                } else if (nodeName.equals("Manager_code")) {
                    System.out.println("\tManager code:\t"
                            + element.getChildNodes().item(0).getNodeValue());
                }
            }
        }} catch (ParserConfigurationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SAXException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}

}

1 个答案:

答案 0 :(得分:0)

这很简单。

  1. 将XML解析为Document DocumentBuilder
  2. 询问用户是否有ID。如果这是命令行,那么Scanner可能有帮助。
  3. 从文档中选择相关数据。 XPath可能是一个好的开始。
  4. 单独执行这些步骤并找出如何执行这些步骤。把它放在一起,你就得到了解决方案。