Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.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 - Fatal编程技术网

Java 如何在xml中获取标记名

Java 如何在xml中获取标记名,java,xml,Java,Xml,上面是我的XMl 如何获取元素标记的名称,如ReportDate、periodingdate、FileDate等等 List<String> stkCompFinaciallist = new ArrayList<String>(); File fXmlFile = new File(filename); DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstan

上面是我的XMl

如何获取元素标记的名称,如
ReportDate
periodingdate
FileDate
等等

List<String> stkCompFinaciallist = new ArrayList<String>();

        File fXmlFile = new File(filename);
        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
        Document doc = dBuilder.parse(fXmlFile);

        // optional, but recommended
        // read this - http://stackoverflow.com/questions/13786607/normalization-in-dom-parsing-with-java-how-does-it-work
        doc.getDocumentElement().normalize();

        out.println("Root element :" + doc.getDocumentElement().getNodeName());
        NodeList nList = doc.getDocumentElement().getElementsByTagName("BalanceSheetEntity");
        out.println("length=" + nList.getLength());

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

            Node nNode = nList.item(temp);

            out.println("\nCurrent Element :" + nNode.getNodeName());
            //out.println("node name:"+ nNode.getNodeName());
            if (nNode.getNodeType() == Node.ELEMENT_NODE) {

                Element eElement = (Element) nNode;


            if (eElement.getElementsByTagName("ReportDate").getLength() > 0) {
                    stkCompFinaciallist.add(eElement.getElementsByTagName("ReportDate").item(0).getFirstChild().getNodeValue());
                    out.println("ReportDate : " + eElement.getElementsByTagName("ReportDate").item(0).getFirstChild().getNodeValue());
                } else {
                    stkCompFinaciallist.add("");
                }

                if (eElement.getElementsByTagName("PeriodEndingDate").getLength() > 0) {
                    stkCompFinaciallist.add(eElement.getElementsByTagName("PeriodEndingDate").item(0).getFirstChild().getNodeValue());
                    out.println("PeriodEndingDate : " + eElement.getElementsByTagName("PeriodEndingDate").item(0).getFirstChild().getNodeValue());



                } else {
                    stkCompFinaciallist.add("");
                }

                if (eElement.getElementsByTagName("FileDate").getLength() > 0) {
                    stkCompFinaciallist.add(eElement.getElementsByTagName("Start").item(0).getFirstChild().getNodeValue());
                    out.println("FileDate : " + eElement.getElementsByTagName("FileDate").item(0).getFirstChild().getNodeValue());
                } else {
                    stkCompFinaciallist.add("");
                }
List stkcompfiniallist=newarraylist();
File fXmlFile=新文件(文件名);
DocumentBuilderFactory dbFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder=dbFactory.newDocumentBuilder();
documentdoc=dBuilder.parse(fXmlFile);
//可选,但推荐
//请阅读以下内容-http://stackoverflow.com/questions/13786607/normalization-in-dom-parsing-with-java-how-does-it-work
doc.getDocumentElement().normalize();
out.println(“根元素:+doc.getDocumentElement().getNodeName());
NodeList nList=doc.getDocumentElement().getElementsByTagName(“BalanceSheetEntity”);
out.println(“length=“+nList.getLength());
对于(int-temp=0;temp0){
stkcompfiniallist.add(eeelement.getElementsByTagName(“ReportDate”).item(0.getFirstChild().getNodeValue());
out.println(“ReportDate:+EEElement.getElementsByTagName(“ReportDate”).item(0.getFirstChild().getNodeValue());
}否则{
stkcompfiniallist.add(“”);
}
if(eElement.getElementsByTagName(“PeriodEndingDate”).getLength()>0){
添加(eeelement.getElementsByTagName(“PeriodEndingDate”).item(0.getFirstChild().getNodeValue());
out.println(“PeriodEndingDate:+EEElement.getElementsByTagName(“PeriodEndingDate”).item(0.getFirstChild().getNodeValue());
}否则{
stkcompfiniallist.add(“”);
}
if(eElement.getElementsByTagName(“文件日期”).getLength()>0){
添加(eeelement.getElementsByTagName(“开始”).item(0.getFirstChild().getNodeValue());
out.println(“FileDate:+EEElement.getElementsByTagName(“FileDate”).item(0.getFirstChild().getNodeValue());
}否则{
stkcompfiniallist.add(“”);
}
以上编码可以得到节点值。 因为标记名超过200个标记,所以我计划首先使用for循环获取标记名以获取值。 这个标签还有另一个用途

请告知如何获得标签名?我只需要标签名
balansheeetenty

谢谢并致以最良好的问候
Sharon

您可以在这里使用Xpath。如果您的XML结构始终包含tag-balansheeetenty,则可以使用Xpath获取balansheeetenty标记的所有子节点

另外,最好使用XSD来验证xml结构

问候
阿卜杜勒

你考虑使用JAXB吗?谢谢…我得到了答案。