현재 Android 앱을 사용하고 있으며 Java 학습 방법을 배우고 있습니다. 몇 년 동안 Python을 가지고 놀았지만 안드로이드 폰이 생겼다. 이 앱은 기본적으로 XML 파일에 저장된 비디오 게임 목록을 로컬에 표시합니다. 지금 XML 파일의 구조는 기본적으로 게임> 게임 (다중)> 이름 (더 이상 중요하지 않은 다른 것들)입니다. 나는 현재 게임의 이름 목록을 얻으려고하고있다. 나는 자습서와 정보를 찾았지만 아무 것도 필요로하지 않는 것 같다. 실제로 작동하는 방법을 이해하고 싶습니다. 복사/붙여 넣기가 가능한 코드 조각을 가지고있는 것이 아닙니다. 또한 이름 목록은 Android에서 사용할 문자열 배열로 끝나야합니다. 여기에 제가 지금 가지고있는 함수가 있습니다. (자습서에서 복사/붙여 넣기를 많이 했으므로 읽을 수는 없습니다. 실제로 작동하면 문제를 해결할 것입니다.) 지금은 listview가 비어있는 것으로 나타납니다. 적어도 그 이전보다 더 나은 그것은 당신이 gameList에 fstNmElmnt.toString()를 추가 점에서, 당신의 코드에서 ... 더 이상하지만Java에서 XML 파일 구문 분석을 사용하여 이름 목록을 얻으십시오.
public static String[] parse(String filename) {
ArrayList<String> gamesList = new ArrayList<String>();
try {
File file = new File(filename);
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(file);
doc.getDocumentElement().normalize();
NodeList nodeList = doc.getElementsByTagName("game");
for (int s = 0; s < nodeList.getLength(); s++) {
Node fstNode = nodeList.item(s);
//if (fstNode.getNodeType() == Node.ELEMENT_NODE) {
Element name = (Element) fstNode;
Element fstElmnt = (Element) fstNode;
NodeList fstNmElmntLst = fstElmnt.getElementsByTagName("name");
Element fstNmElmnt = (Element) fstNmElmntLst.item(0);
NodeList fstNm = fstNmElmnt.getChildNodes();
gamesList.add(fstNmElmnt.toString());
//}
}
} catch (Exception e) {
e.printStackTrace();
}
String[] gamesArray;
gamesArray = (String[]) gamesList.toArray(new String[0]);
return gamesArray;
}
Java에 익숙하지 않다면 XML 파일을 구문 분석하는 것으로 시작하는 것이 좋습니다. DOM 호출의 일반적인 형식은 괜찮아 보입니다. 'NodeList nodeList'로 무엇을하고 있습니까? 프로그램이 FOR 루프에 들어가 있습니까? – user183037
학습 과제가 아니라면 저수준 DOM 인터페이스를 사용하여 하나의 XPath 표현식으로 쉽게 달성 할 수있는 일을하고 싶지 않을 것입니다. (하위 레벨 트리 탐색을 사용하려는 경우에도 DOM은 가능한 최악의 선택입니다. 즉, JDOM과 XOM은 사용하기가 훨씬 빠르며 빠릅니다.) –
실제로 Android에는 XPath가 없습니다. 그래서 저수준 것들을해야합니다. –