public static void deleteNoteAndBlank(Node node) { if (node.getNodeType() == TEXT_TYPE || node.getNodeType() == NOTE_TYPE) { return; } ArrayList<Node> deleteNodes = new ArrayList<Node>(); for (int i = 0; i < node.getChildNodes().getLength(); i++) { Node childNode = node.getChildNodes().item(i); //递归 deleteNoteAndBlank(childNode); //不能一个一个删除,否则后续节点会计算错误.... if ((childNode.getNodeType() == TEXT_TYPE && childNode.getNodeValue().length() == 2) || childNode.getNodeType() == NOTE_TYPE) { deleteNodes.add(childNode); } } for (int i = 0; i < deleteNodes.size(); i++) { node.removeChild(deleteNodes.get(i)); } }