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 –