Как я могу регулировать данные из текстового файла с помощью Java?

Быть более конкретным; У меня есть XML-файл, который содержит много букв и данных GPS, как этот;

</Satellites>
</PVTInfo>
<PVTInfo ValidFlags="14327" Time="51973,3" LastTime="51973,1"
 Latitude="38,7525418333333" Longitude="35,5297423333333" 
 EllipsoidHeight="1120"
 GeoidHeight="1089,9" Speed="0,0166666666666667" Heading="338,9" 
 MagneticVariation="-5,19999999999999" Depth="0" PDOP="1,476482" HDOP="0,7"
 VDOP="0,7" TDOP="0" Status="GPSStatusTypeDOINGFIXES" Mode="GPSModeType3D">
<Satellites>
  <SatInfo PRN="69" Elevation="70" Azimuth="240" SNR="43" Used="True" />
  <SatInfo PRN="28" Elevation="61" Azimuth="188" SNR="44" Used="True" />
  <SatInfo PRN="5" Elevation="41" Azimuth="282" SNR="47" Used="True" />
  <SatInfo PRN="10" Elevation="35" Azimuth="202" SNR="47" Used="True" />
  <SatInfo PRN="7" Elevation="45" Azimuth="53" SNR="45" Used="True" />
  <SatInfo PRN="9" Elevation="31" Azimuth="123" SNR="39" Used="True" />
  <SatInfo PRN="74" Elevation="28" Azimuth="172" SNR="35" Used="True" />
  <SatInfo PRN="91" Elevation="13" Azimuth="62" SNR="31" Used="True" />
  <SatInfo PRN="30" Elevation="69" Azimuth="10" SNR="47" Used="True" />
  <SatInfo PRN="78" Elevation="33" Azimuth="324" SNR="39" Used="True" />
  <SatInfo PRN="72" Elevation="63" Azimuth="347" SNR="39" Used="True" />
  <SatInfo PRN="13" Elevation="25" Azimuth="310" SNR="37" Used="True" />
  <SatInfo PRN="39" Elevation="36" Azimuth="139" SNR="37" Used="False" />
  <SatInfo PRN="85" Elevation="34" Azimuth="264" SNR="38" Used="False" />
  <SatInfo PRN="19" Elevation="15" Azimuth="59" SNR="33" Used="False" />
  <SatInfo PRN="20" Elevation="12" Azimuth="181" SNR="38" Used="False" />
</Satellites> 

Файл как 35 страниц. Так что у меня много строк для процедур. Все, что мне нужно, это номер точки, широта и долгота. Я использую Map Info для получения этих данных, поэтому мне нужна эта информация в этом формате;

"Число [TAB] Широта [TAB] Долгота"

В противном случае информация о карте не сможет обработать эти данные.

Заранее спасибо...

3 ответа

Решение

Существует много способов чтения и анализа XML. Взгляните на эти учебники по Java XML. Анализ DOM проще, но вам понадобится достаточно памяти для хранения всего документа (XML-файл). Если это повторяется, то стоит потратить время на изучение JAXB, иначе я просто собрал бы что-нибудь, следуя примеру.

См. Также этот вопрос - в одном из ответов приведен пример кода.

Я видел ответы и решил, что лучший способ сделать это на Java - это DOM (в моем случае). Но для изучения разных языков я пишу свой собственный код Map Basic. Так и происходит так;

Dim str As String, posLat As Integer, posLat1 As Integer, posLat2 As String, posLon As Integer, posLon1 As Integer, posLon2 As String, i As Integer
Open File "C:\Users\Capan\Desktop\Hüseyin\geotrack Log.xml" For Input As #1 
Open File "C:\Users\Capan\Desktop\Coordinates3.txt" For Output As #2

Do While Not EOF(1)
    Line Input #1, str

    If Not EOF(1) Then
        posLon = InStr(1,str,"Longitude")
        posLat = InStr(1,str,"Latitude")

     If posLon > 0 and posLat > 0 Then 
          posLon1 = posLon + 11
          posLon2 = Mid$(str,posLon1,8)
         posLat1 = posLat+10
         posLat2 = Mid$(str,posLat1,8)
     End If
        Print #2, " "+posLat2+" "+posLon2

    End If
Loop 
Close File #1
Close File #2

Вы можете использовать XQL (Xml Query Language), используя Java XPath. Это самый короткий путь.

В качестве альтернативы вы можете конвертировать (или искать) XSD-файл, который определяет структуру вашего XML-файла. И преобразовать его в набор классов Java, используя JAXB (Java Xml Binding). В результате получается наиболее читаемый код.

Другой вариант - загрузить файл с помощью DocumentBuilder (DOM). Меньше кода котельной плиты.

Все 3 варианта имеют (не) преимущества. Это вопрос гибкости, зависимости и личного вкуса.

Другие вопросы по тегам