Java 如何在xml中获取标记名
上面是我的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
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吗?谢谢…我得到了答案。