我目前正在开发一个程序,该程序采用从组合框中选择的“数据类型”的值(通过.getSelectedIndex()),然后向下钻取“第一条记录”并将其作为字符串数组返回。
组合框由相同的 XML 文件填充,我正在使用 DOM 解析器在 Java 中进行编码。
XML 代码片段:
<?xml version="1.0" encoding="UTF-8"?>
<dealershipParsers>
<Parser id="ADPParser2">
<data type="Sales" />
<first record = "DEAL-NO"/>
<data type="Service" />
<first record ="RO"/>
<data type="Email" />
<first record ="CONTROL"/>
</Parser>
我目前用来尝试获取和返回“第一条记录”的 Java 代码:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = factory.newDocumentBuilder();
Document document = docBuilder.parse(fileName);
//Searches all text
document.getDocumentElement().normalize();
//Gets elements from xml
Element elementArray = document.getDocumentElement();
NodeList listResources = elementArray.getElementsByTagName("Parser");
Element elemChild = (Element) listResources.item(item);
NodeList dataChildren = elemChild.getElementsByTagName("data");
Element elemFirst = (Element) dataChildren.item(item);
NodeList firstChildren = elemFirst.getElementsByTagName("first");
int tam = firstChildren.getLength();
String[] vecResources = new String[tam];
for (int i = 0; i < tam; i++)
{
Element elem = (Element) firstChildren.item(0);
vecResources[i] = elem.getAttribute("record"); // change to type
}
//returns an array with all the types of data
return vecResources;
我已经设法确定我的问题是在“dataChildren”、“elemFirst”和“firstChildren”之间的某个过渡处。“dataChildren”中有一个计数,但是当我在 netbeans 中进行调试时,它显示“tam”和“firstChildren”一样等于 0。
为什么它不能将值从一个节点列表传递到另一个节点列表?我错过了什么?
任何意见,将不胜感激。