用的是 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 = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\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" +
" \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。但是还是不会修改。