我试过了:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(f);
Node mapNode = getMapNode(doc);
System.out.print("\r\n elementName "+ mapNode.getNodeName());//This works fine.
Element e = (Element) mapNode; //This is where the error occurs
//it seems to work on my machine, but not on the server.
e.setAttribute("objectId", "OBJ123");
但这会在将其强制转换为Element的行上引发java.lang.ClassCastException错误。 mapNode是有效节点。 我已经打印了
我认为也许这段代码在Java 1.4中不起作用。我真正需要的是使用Element的替代方法。我试着做
NamedNodeMap atts = mapNode.getAttributes();
Attr att = doc.createAttribute("objId");
att.setValue(docId);
atts.setNamedItem(att);
但是getAttributes()在服务器上返回null。即使不是,并且我在本地使用与服务器上相同的文档。并且它可以打印出getNodeName(),只是getAttributes()不起作用。
最佳答案
我在服务器上使用了其他dtd文件。这就是问题所在。