我试过了:

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文件。这就是问题所在。

07-24 14:58