GPS 좌표 (GPX)의 모음 인 Java를 사용하여 XML 파일을 만들려고합니다. 내 안드로이드 장치 (약 1 초마다)에서 좌표를받을 때마다 결과를 기존 XML 파일에 추가해야합니다. 찾고있는 출력은 trkpt 요소를 반복 항목으로 사용하여 아래에 표시됩니다. 문제는 trkseg 상위 요소 내부에 있어야하기 때문에 새 trkpt를 파일 끝에 추가 할 수 없다는 것입니다.Java를 사용하여 큰 XML 파일에 하위 요소를 추가하는 방법은 무엇입니까?
지금까지 두 가지 다른 API, SIMPLEXML 및 JDOM을 사용해 보았습니다. SIMPLEXML을 사용하면 자식 요소를 기존 파일에 추가하는 방법을 알 수 없으므로 JDOM으로 전환했습니다. JDOM에서는 아래에 표시된 것처럼 trkpt 요소를 추가 할 수있었습니다. 그러나 파일이 커지면서 빠르게 프로그램의 사용자 인터페이스가 느려졌습니다. JDOM을 사용하여 SAXBuilder를 사용하여 파일을 다시 열고 추가했습니다. 이 문제는 새로운 요소를 추가하고 파일을 다시 작성하기 전에 전체 파일을 메모리에 복제해야한다는 것이 었습니다. 따라서 파일이 커질수록 장치에 작업이 더 많이 요구됩니다. 새 데이터를 작성하기 전에 전체 파일을 검사/복사하지 않는 솔루션이 필요합니다. Java 또는 Java 용 API로이를 수행하는보다 효율적인 방법이 있습니까? 어떤 도움을 주셔서 감사합니다!
<?xml version="1.0" encoding="UTF-8"?>
<gpx xmlns="http://www.topografix.com/GPX/1/1">
<trk>
<trkseg>
<trkpt lon="9.860624216140083" lat="54.9328621088893">
<ele>228.0</ele>
</trkpt>
<trkpt lon="9.860624216140100" lat="54.9328621088754">
<ele>234.0</ele>
</trkpt>
<trkpt lon="9.860624216140343" lat="54.9328621088678">
<ele>227.0</ele>
</trkpt>
</trkseg>
</trk>
</gpx>
항상 같은 방식으로 데이터를 추가하나요? 그런 다음 줄 단위로 파일을 읽은 다음 XML을 인식하지 못하는 방식으로 줄을 추가하십시오. 결과가 유효한 XML 인 한. –
대신에 일반 파일에 데이터를 추가하고 나중에 전체 파일을 XML로 변환 할 수 있습니까? 또는 배치로 변환 할 수 있습니까? XML을 지속적으로 업데이트하려고 시도하는 것은 불필요하게 어려운 일입니다. ;-) – DNA
귀하의 질문에 클라이언트 측 처리 (안드로이드) 및 서버 쪽 처리, 올바른 관련이 있다고 가정합니까? – home