1
我目前正在开发一个程序,它从组合框中选择'数据类型'的值(通过.getSelectedIndex()),然后向下钻取'第一条记录'并将其作为字符串数组。NodeList not populating
组合框由相同的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'等于0,就像'firstChildren'一样。
为什么不能将值从一个节点列表传递给另一个节点列表?我错过了什么?
任何意见,将不胜感激。
哦。我的。我不敢相信我错过了!我一直在盯着这愚蠢的事情一个星期试图找出它!当然是!啊谢谢你,谢谢你!那样做了!我首先提出了将我的XML结构修改为分层结构的建议。 –
@senex_subconscious不客气。您可能希望下次提前寻求帮助,而不需要整整一周时间。 :-P –