xml例程不处理我想要的子节点

爬虫
    <report id="oleg">
        <title>olegitimerade rapport</title>
        <id_email>joch1</id_email>
        <id_email>kang15</id_email>
    </report>

我将以下代码与DOM XML解析器一起使用,以将上面的列表提取为xml文件。

String tag = "report";
String[] elementTags = new String[] {"title", "id_email"};

NodeList nList = this.doc.getElementsByTagName(tag);

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

            Node nNode = nList.item(temp);

            if (nNode.getNodeType() == Node.ELEMENT_NODE) {
                HashMap<String, String> attribute = new HashMap<String, String>();
                Element eElement = (Element) nNode;

                if(eElement.hasAttribute("id")){
                    String id = eElement.getAttribute("id");

                    attribute.put("id", id);            

                    for (String elementTag : elementTags){
                        try{

                            int index=0;

                            while(null!=eElement.getElementsByTagName(elementTag).item(index).getTextContent()){
                                attribute.put(elementTag, eElement.getElementsByTagName(elementTag).item(index).getTextContent());
                                index++;
                            }
                        }catch (Exception e){
                            //System.out.println("id : "+id+" - Attribute element '"+ elementTag+ "' not found in XML! ["+this.xmlFile+"]");
                        }   
                    }

                    attributes.add(attribute);
                }
            }
        }
    }catch (Exception e) {
        e.printStackTrace();
    }

问题是当我获得多个标签时。...我无法提取第二个ID(kang15)。

显然,while循环是不正确的,因此在这里我需要一些帮助来解决此问题。

   while(null!=eElement.getElementsByTagName(elementTag).item(index).getTextContent()){
                            attribute.put(elementTag, eElement.getElementsByTagName(elementTag).item(index).getTextContent());
                            index++;
                        }
麦克道尔

考虑为此使用XPath

XPath xpath = XPathFactory
    .newInstance()
    .newXPath();
Element report = (Element) xpath.evaluate("//report", doc, XPathConstants.NODE);
String id = xpath.evaluate("@id", report);
String title = xpath.evaluate("title", report);
NodeList emails = (NodeList)
              xpath.evaluate("id_email/text()", report, XPathConstants.NODESET);

System.out.println(id);
System.out.println(title);
for(int i=0; i<emails.getLength(); i++) {
  System.out.println(emails.item(i).getTextContent());
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在子例程(XML :: LibXML)中处理子节点

来自分类Dev

为什么Outlook嗅探器不处理我的icalendar邀请?

来自分类Dev

处理返回的数组的子例程?

来自分类Dev

xPage为什么处理我的评论

来自分类Dev

处理我的物件转换为数字

来自分类Dev

Firefox无法处理我的jQuery

来自分类Dev

如何处理我的错误?

来自分类Dev

如何处理我的JavaScript作业?

来自分类Dev

处理我的库中的回调

来自分类Dev

为什么DBI的RaiseError总是不触发我的CORE :: GLOBAL :: die子例程?

来自分类Dev

R中的XML处理:在子节点中使用xmlGetAttr

来自分类Dev

批处理文件子例程

来自分类Dev

能帮我处理我的C代码吗?

来自分类Dev

我只想要XML元素的直接子元素,而不是所有子元素

来自分类Dev

字符串的子字符串不按我想要的方式工作

来自分类Dev

express.js不是异步处理我的请求

来自分类Dev

是什么在处理我的WCF对象,为什么?

来自分类Dev

如何创建Grunt Multitask处理我的模板

来自分类Dev

hybris-哪个Spring Controller可以处理我的请求?

来自分类Dev

Webpack正在处理我的.scss样式表类

来自分类Dev

用必填字段处理我的表单php

来自分类Dev

如何处理我的应用推介金额?

来自分类Dev

PapaParse无法正确处理我的约会

来自分类Dev

处理我的连接变量以供登录脚本使用

来自分类Dev

如何创建Grunt Multitask处理我的模板

来自分类Dev

jQuery vTicker插件未处理我的列表

来自分类Dev

xPage为什么处理我的注释,好像不是

来自分类Dev

哪个驱动程序在处理我的触摸板?

来自分类Dev

如何处理我未分配的内存