簡體   English   中英

Batik 的 SVGDocument.getElementsByTagNameNS 返回空的 NodeList,盡管命名空間和標記名已正確設置

[英]Batik's SVGDocument.getElementsByTagNameNS returns empty NodeList despite of namespace and tagname being correctly set

我有一部分代碼解析 SVG 文檔。

String parser = XMLResourceDescriptor.getXMLParserClassName();
        SAXSVGDocumentFactory factory = new SAXSVGDocumentFactory(parser);
        SVGDocument svgDocument = null;
        try {
            //svgDocument = factory.createSVGDocument(IMAGE_SVG);
            svgDocument = factory.createSVGDocument("file://", new FileInputStream(f
            ));
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }

        NodeList gs= svgDocument.getElementsByTagNameNS("http://www.w3.org/2000/svg","g");
        NodeList pathes = svgDocument.getElementsByTagNameNS("http://www.w3.org/2000/svg", "path");

出於奇怪的原因, gspathes內部沒有節點。 在調試器中看到 svgDocument 正確識別了其中的elementsById ,而elementsByTagNameselementsByTagNamesNS為空。 如何解決這個問題? 如何讓元素也按標簽名稱加載?

在此處輸入圖像描述

文件加載有問題

    DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
    docBuilderFactory.setNamespaceAware(true);
    DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();

    String line = new String(Files.readAllBytes(Paths.get("path to file")), StandardCharsets.UTF_8);

    Document doc = docBuilder.parse(new InputSource(new StringReader(line)));

並且該文檔根據需要返回.getElementsByTagNameNS

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM