【问题标题】:Creating GPX XML in Android Java在 Android Java 中创建 GPX XML
【发布时间】:2015-12-09 22:58:25
【问题描述】:

我正在尝试在 Android 中创建 GPX 文件,但不知道如何创建具有值的元素,例如以下 sn-p 中的 <ele> or <time> 元素。

  <trkpt lat="-33.626932" lon="151.306745">
    <time>2015-09-12T03:25:00.000Z</time>
    <ele>-6</ele>
  </trkpt>

在 PHP 中,我可以创建一个带有值的元素,例如:

 $xml = new DOMDocument("1.0");
 $trkpt = $xml->createElement("trkpt");
 $trkpt->appendChild($xml->createElement("ele","-6"));

但在我的一生中,我在 Java 中找不到等价物。 我已经尝试过(为了清楚起见,删除了 try/catch):

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder parser =  factory.newDocumentBuilder(); 
Document xml = parser.newDocument();
Element trkpt = xml.createElement("trkpt");
trkpt.setAttribute("lat", "-33.626932");
trkpt.setAttribute("lon","151.306745"); 
Attr ele = xml.createAttribute("ele");
ele.setNodeValue("-6");
trkpt.setAttributeNode(ele);

但这会产生:

<trkpt lat="-33.626932" lon="151.306745" ele="-6">

这是不正确的 GPX 语法。 我想避免从头开始构建字符串,因为我的文件可能非常大,有 40,000 个点。 有什么想法吗?

【问题讨论】:

    标签: android xml gpx


    【解决方案1】:

    代替:

        Attr ele = xml.createAttribute("ele");
        ele.setNodeValue("-6");
        trkpt.setAttributeNode(ele);
    

    试试:

        Element ele = xml.createElement("ele");
        ele.appendChild(xml.createTextNode("-6"));        
        trkpt.appendChild(ele);
    

    【讨论】:

      【解决方案2】:

      好的,它看起来很难看,但这是答案。我必须在&lt;ele&gt; 元素中添加一个文本节点:

      Element ele =  xml.createElement("ele");
      ele.appendChild(xml.createTextNode("-6"));
      trkpt.appendChild(ele);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-18
        • 1970-01-01
        • 1970-01-01
        • 2012-09-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多