【问题标题】:How do i fix Document: null error on GML-Response如何修复文档:GML 响应上的空错误
【发布时间】:2018-09-30 12:27:16
【问题描述】:

我必须在 Java 中使用 jdom 将 GML-Server 响应转换为 GPX-File 到目前为止,我发送到服务器的 Get-Feature-Request 是正确的,并给了我一个 GML-File 作为响应,但是当我想打印文件时它说 [#document: null]

控制台输出:

网址https://www.geoportal-amt-beetzsee.de/isk/beet_radwanderwege?service=WFS&version=1.0.0&REQUEST=GetFeature&typename=Riewend-Burgwall-Wanderweg

[#document: null]

try {
    //zu Funktionstestzwecken - löschen wenn nicht mehr benötigt
    String typename = gui.ConverterDialog.tfconverter.getText();
    String urlString = gui.UrlDialog.txturlinput.getText() + "?service=WFS&version=1.0.0&REQUEST=GetFeature&typename=" + typename;

    //entfernen wenn nicht mehr benötigt
    System.out.println("url "+ urlString);
    URL url = new URL(urlString);

    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    DocumentBuilder db = dbf.newDocumentBuilder();
    Document doc = db.parse(url.openStream());
    //doc.getDocumentElement().normalize();

    //entfernen wenn nicht mehr benötigt
    //doc null ???
    System.out.println(doc);

} catch(Exception e) {
    String errorMessage = "An error occured:" + e;
    System.err.println(errorMessage);
    e.printStackTrace();
}

【问题讨论】:

    标签: java jdom


    【解决方案1】:

    当行

    System.out.println(doc);
    

    运行,它调用文档doctoString() 方法并打印出来。文档的toString() 方法不会将XML 文档序列化为字符串;相反,它只打印节点名称及其值。文档节点的名称是#document,而文档节点没有值,所以打印的是null

    我尝试在测试 XML 文档上运行您的 XML 解析代码,它还打印出 [#document: null]

    看起来您的 XML 解析失败并给您留下了一个空文档,但我认为情况并非如此。您的代码很可能工作正常。

    如果要将 XML 文档序列化为字符串,请参阅 this question

    【讨论】:

    • 感谢您的回答和建议,很高兴知道到目前为止的代码是正确的。
    【解决方案2】:

    这段代码解决了这个问题:

        //...
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        Document doc = db.parse(url.openStream());
        doc.getDocumentElement().normalize();
        Transformer transformer = TransformerFactory.newInstance().newTransformer();
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
    
    
        StreamResult result = new StreamResult(new StringWriter());
        DOMSource source = new DOMSource(doc);
        transformer.transform(source, result);
    
        String xmlString = result.getWriter().toString();
        System.out.println(xmlString);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-29
      相关资源
      最近更新 更多