java xml 操作 getElementById 获取到的总是 null
巴扎黑
巴扎黑 2017-04-18 10:33:47
[Java讨论组]

用的是 org.w3c.dom 中的类
我确定 id 存在的,但是获取到的总是 null。

测试代码如下:


import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;


public class XmlTest {

private static final String originXml = "\n" +
            "\n" +
            "  \n" +
            "    \n" +
            "      com.sunyard.dragon.organ.Terminal.start#.\n" +
            "      SequenceFlow_0dx3fgt\n" +
            "    \n" +
            "    \n" +
            "      com.sunyard.dragon.organ.Switch.branch#S.\n" +
            "      \n" +
            "        \n" +
            "          \n" +
            "            xml./we/request/params\n" +
            "          \n" +
            "        \n" +
            "      \n" +
            "      SequenceFlow_0dx3fgt\n" +
            "    \n" +
            "    \n" +
            "  \n" +
            "  \n" +
            "    \n" +
            "      \n" +
            "        \n" +
            "        \n" +
            "          \n" +
            "        \n" +
            "      \n" +
            "      \n" +
            "        \n" +
            "      \n" +
            "      \n" +
            "        \n" +
            "        \n" +
            "        \n" +
            "          \n" +
            "        \n" +
            "      \n" +
            "    \n" +
            "  \n" +
            "\n";

    public static void main(String[] args) throws IOException, SAXException, ParserConfigurationException {
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        factory.setValidating(true);
        factory.setNamespaceAware(true); // never forget this!

        DocumentBuilder builder = factory.newDocumentBuilder();
        InputStream is = new ByteArrayInputStream(originXml.getBytes("UTF-8"));
        Document doc = builder.parse(is);
        NodeList list = doc.getElementsByTagName("bpmn2:task");
        for (int i = 0; i < list.getLength() ; i++){
            System.out.println(list.item(i));
        }

        System.out.println(doc.getElementById("Task_0mhraek"));


    }
}

经过搜索认为问题是没有在 DTD 中定义 ID 是 ID。但是还是不会修改。

巴扎黑
巴扎黑

全部回复(0)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号