用于检测根并打印其xml节点的循环

时间:2013-01-15 15:40:40

标签: java xml itextsharp

我正在尝试根据jsp页面发送的值动态读取节点。但不知怎的,我陷入了for循环。 假设我有这个xml:

<123>
    <a1>A</a1>
    <a2>B</a2>
    <a3>C</a3>
</123>

我正在使用此函数来读取节点并获得输出:

try {
    PdfReader pdfReader = new PdfReader(fileName);
    PdfStamper pdfStamper = 
        new PdfStamper(pdfReader,new FileOutputStream(fileName));
    String xmlRecords = XmlString;
    DocumentBuilder db = 
        DocumentBuilderFactory.newInstance().newDocumentBuilder();
    InputSource is = new InputSource();
    is.setCharacterStream(new StringReader(xmlRecords));
    Document doc = db.parse(is);
    NodeList nodes = doc.getElementsByTagName("123");

    for(int i=1; i <= divlen; i++) {             
        for (int j = 0; j < nodes.getLength(); j++) {
            Element element = (Element) nodes.item(j);
            NodeList aval = element.getElementsByTagName("a"+i);
            Element line = (Element) aval.item(0);
            int avalue = Integer.parseInt(getCharacterDataFromElement(line));
        }
    }            
    pdfStamper.close();
}

其中divlen是由jsp页面分配的'a'的总数。但是,如果假设我删除a2节点并发送休息,我如何为a1和a3节点运行for循环?

1 个答案:

答案 0 :(得分:-1)

在你的情况下,我会创建3个列表(每个标签a1,a2,a3一个)。

然后我只有内部for循环(j),其中我根据它的标签名称将Element放入其中一个列表中。

最后,在这个循环之后,我会处理每个列表的每个元素,无论我需要做什么。