我正在尝试根据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
循环?
答案 0 :(得分:-1)
在你的情况下,我会创建3个列表(每个标签a1,a2,a3一个)。
然后我只有内部for循环(j),其中我根据它的标签名称将Element放入其中一个列表中。
最后,在这个循环之后,我会处理每个列表的每个元素,无论我需要做什么。