Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用java规范文本文件中的数据?_Java_Mapinfo_Map Basic - Fatal编程技术网

如何用java规范文本文件中的数据?

如何用java规范文本文件中的数据?,java,mapinfo,map-basic,Java,Mapinfo,Map Basic,具体来说,;我有一个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

具体来说,;我有一个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页。所以我有很多线要处理。我只需要点号,纬度和经度。我正在使用地图信息来处理这些数据,所以我需要这种格式的信息

“数字[TAB]纬度[TAB]经度”

否则地图信息无法处理此数据

提前感谢…

您可以使用Java XPath使用XQL(Xml查询语言)。这是最短的路

或者,您可以转换(或查找)定义XML文件结构的XSD文件。并使用JAXB(JavaXML绑定)将其转换为一组java类。这将产生可读性最强的代码

另一个选项是使用DocumentBuilder(DOM)加载文件。更少的锅炉板代码


所有3个选项都有(dis)优势。这是一个灵活性、依赖性和个人品味的问题。

有很多方法可以读取和解析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

您是否考虑过使用JAXB或XStream将XML转换为Java对象,然后操纵数据以获得所需的输出?还有人讨厌在没有给出原因的情况下否决问题吗?我发现当用户是新用户时,它特别令人担忧。“欢迎来到苏伊士,用一条鱼打一巴掌”。我这么做已经5年多了,我没有看到任何值得否决的问题。感谢保罗对不合理否决的关注。事实上,我还有一个帐户,我已经用了一年了。但当我问这个问题时,我不在家,所以我刚刚开了另一个账户。我真的不明白当人们投票否决像这样的新用户时。