Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.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_Dom - Fatal编程技术网

Java 读取特定节点的XML

Java 读取特定节点的XML,java,xml,dom,Java,Xml,Dom,假设我有一个如下所示的XML <?xml version="1.0" encoding="UTF-8"?> <Data> <CreditCards> <Visa> <Name>visaname</Name> <Number>4265787654344445</Number> <ExpMonth>

假设我有一个如下所示的XML

<?xml version="1.0" encoding="UTF-8"?>
<Data>
    <CreditCards>
        <Visa>
            <Name>visaname</Name>
            <Number>4265787654344445</Number>
            <ExpMonth>05</ExpMonth>
            <ExpYear>2017</ExpYear>
            <CVV>123</CVV>
        </Visa>
        <Master>
            <Name>mastername</Name>
            <Number>5678787654344445</Number>
            <ExpMonth>05</ExpMonth>
            <ExpYear>2015</ExpYear>
            <CVV>123</CVV>
        </Master>
    </CreditCards>
</Data>
public void readData(String nodeName) {

//Code here

}
<Data>
    <employee>
        <firstname>test1</firstname>
        <lastname>lasttest</lastname>
    </employee>
</data>
public void readData2(String nodeName) {

//Code here

}
所以当我用这个方法的时候

readData("Visa"); 
我应该打印所有子节点和相应的值。输出应该如下所示

Name = visaname
Number = 4265787654344445
ExpMonth = 05
ExpYear = 2017
CVV = 123

如果我有一个如下所示的xml

<?xml version="1.0" encoding="UTF-8"?>
<Data>
    <CreditCards>
        <Visa>
            <Name>visaname</Name>
            <Number>4265787654344445</Number>
            <ExpMonth>05</ExpMonth>
            <ExpYear>2017</ExpYear>
            <CVV>123</CVV>
        </Visa>
        <Master>
            <Name>mastername</Name>
            <Number>5678787654344445</Number>
            <ExpMonth>05</ExpMonth>
            <ExpYear>2015</ExpYear>
            <CVV>123</CVV>
        </Master>
    </CreditCards>
</Data>
public void readData(String nodeName) {

//Code here

}
<Data>
    <employee>
        <firstname>test1</firstname>
        <lastname>lasttest</lastname>
    </employee>
</data>
public void readData2(String nodeName) {

//Code here

}
当我使用这个方法的时候

readData2("firstname");
它应该打印以下内容

test1
真的有可能吗?我尝试使用JDOM2API,但无法使其工作。实现这两个结果的理想方式是什么?谢谢

代码,我正在尝试

public void readXMLData(String filePath) {

    File xmlFile = new File(filePath);
    Map<String,String> parametersMap = new HashMap<String,String>();
    try {
        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
        Document doc = dBuilder.parse(xmlFile);
        doc.getDocumentElement().normalize();

        //Root Element
        System.out.println("Root element : " + doc.getDocumentElement().getNodeName());

        NodeList nodeLst = doc.getElementsByTagName("Visa");
        System.out.println("----------Information of Visa Card----------");

        Node node = nodeLst.item(0);

        if (node.getNodeType() == Node.ELEMENT_NODE) {
            Element element = (Element) node;
            System.out.println("Child nodes : "+element.getChildNodes());

        }

    }
    catch(Exception e) {
        e.printStackTrace();
    }
}

我使用了DOM解析器,但它没有给我节点的确切值。它总是返回null。添加了代码。。但这只是一个粗略的输出。Node.toString通常是错误的输出。您需要调用getTextContent之类的东西。