2013-05-19 8 views
0

Java를 사용하여 위에서 아래로 시작하는 XML을 읽고 싶습니다. 그러나 다른 요소로 건너 뛰고 해당 위치에서 읽기를 시작할 수 있기 때문에 재귀 함수를 사용하고 싶지 않습니다.Java XML 위로부터 아래로 XML 파일 읽기

저는이 방법을 사용하여 getParent()indexOf() 메서드를 사용하려고 시도했지만 (이 세 라이브러리는 모두 다음 메서드를 사용합니다),이 메서드는 특성과 요소를 구분하지 못하기 때문에 매우 혼란 스럽습니다.

이 작업을 수행하는 간단한 방법이 분명해야하지만, dom4j, jdomxom을 시도한 후에도 해결책을 찾지 못했습니다.

[편집] 정보 :

내 친구 질문/응답 형 스타일로 콘솔 텍스트 기반의 게임을하고 싶어. Java로 하드 코딩하는 대신, XML이 편리한 트리 스타일을 가지고 있기 때문에 XML 파일을 읽도록 시도하기로 결정했습니다. 다음은 내 XML 파일의 예입니다.

가상 프로그래밍 언어처럼 XML을 사용하는 것이 금기인지는 모르겠습니다. 누구든지 다른 제안이 있으면 자유롭게 말해주십시오.

+0

조금 더 설명 할 수 있습니까? 달성하고자하는 것은 무엇입니까? 네 문제가 뭔지 모르겠다.당신은'getParent()'와'indexOf()'메소드를 언급했지만 JDOM의 일부분이라는 것을 잊어 버렸다. 다음 번에는 그것을 언급하는 것이 도움이 될 것이므로 이미 가지고있는 정보를 연구 할 시간을 낭비하지 않아도됩니다. – vanje

답변

1

귀하의 디자인은 기본적으로 좋은 Declarative Programming의 예입니다. DOM 파서 나 SAX를 사용하여 XML 파서를 사용하여 XML 파일을 읽어야한다. 나는 노드를 다시 방문하기를 원할 것으로 생각하기 때문에 DOM이 필요하다고 생각합니다 (FWIW는 XOM, xom.nu를 사용합니다). XML 기반 선언적 프로그래밍의 가장 좋은 예 중 하나는 데이터와 명령이 모두 XML 인 XSLT입니다.

이 모델을 많이 사용합니다. 데이터 구조가 외부에 있고 편집 할 수 있다는 장점이 있습니다.

을 (당신의 XML 루트 요소를 필요로합니다)하지만 는 속성과 요소를 구분하지 방법이 할 주로하기 때문에 매우 지저분한이라도.

모든 DOM 또는 SAX 도구는 특성과 요소를 매우 명확하게 구분하므로 혼동이 있다면 다른 곳에서 사용됩니다.

0

XML 스 니펫으로 수행 할 작업을 표시하는 것이 좋지만 일반적으로 모든 종류의 파일을 읽으려면 java.util.Scanner를 사용하십시오.

Scanner scan = new Scanner (new File("file.xml")); 
while (scan.hasNext()) { 
    String theData = scan.nextLine(); 
} 
scan.close(); 

이렇게하면 스캔 할 줄이 부족할 때까지 필요한 값이 반환됩니다. 호프가 작동하고 해피 코딩!

+0

XML은 줄 중심 언어가 아닙니다. 줄 지팡이는 여러 가지 방법으로 분할되거나 병합 될 수 있습니다. XML 구문 분석기를 사용하십시오. –

0

xml 파일을 읽고 싶기 때문에. 나는 SAX 파서를 추천한다. 이벤트 기반의 파서는 xml 읽기 (top down approach)를 위해 매우 빠르고 효율적입니다.

은 색소 파서의 사용법에 대해 설명합니다.

감사