不使用现成DOM等开源jar包,用纯java类解析xml文件,谁能写出来帮个忙,急用! 读写一个XML文件,要求能查找到第一个特定名字的节点。根节点最后追加一个节点。其他功能不限。(不使用现成DOM等开源jar包) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用<...>的格式表明一些特定节点的开始,用</...>表明一些特定节点的结束,去捣鼓XML字符串 只提供思路第一用正则,这是最快的,但是歧义也多。时间足够多哪编写类吧。遍历,一个字符一个字符读,注意< > = / " 和空格这几个特殊字符和字符的组合 把XML整个文件读出来,存为字符串,根据字符串中XML的语法规则进行解析撒.不使用dom4j那就只好这样啦.也没什么难的,就是写起来烦. 也就是说要实现一个 XML 解析器喽~~ 这是考试吗?还规定不准用dom,晕 标准的JDK里面就自带了处理XML的类自己可以查看API private static void documentAnalyzeXML(String xmlPath) { if ("".equals(xmlPath)) return; DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance(); DocumentBuilder dombuilder = null; InputStream is = null; try { dombuilder = domfac.newDocumentBuilder(); is = new FileInputStream(xmlPath); Document doc = dombuilder.parse(is); Element root = doc.getDocumentElement(); NodeList pdm = root.getChildNodes(); …… } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (FileNotFoundException ex) { ex.printStackTrace(); } catch (SAXException ex) { ex.printStackTrace(); } catch (IOException ec) { ec.printStackTrace(); } finally { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } }…………………… /** * 辅助方法 从节点列表中得到节点为nodeName的字段。//此方法可以写成递归 * * @param nodelist * @param nodeName * @return */ private static Node getNode(NodeList nodelist, String nodeName) { Node node = null; // 注意:for循环可以优化:把节点名称和Node当做参数。 for (int i = 0; i < nodelist.getLength(); i++) { node = nodelist.item(i); if (nodeName.equals(node.getNodeName())) break; } return node; } 可以参考jdk API,很简单的。可以找找。也希望其他人帮一下楼主! 这么跟你说吧,JDK 内置的 XML 解析器也是第三方的! 关于java.net.SocketException:的处理问题 图形用户界面怎么样插入一个IE页面: firebox下怎么引用iframe Java 压缩流的问题,求高手指点,先准备200分 关于缓冲区问题 有没有用java开发的blog发布平台阿? 处学java,推荐基本书和网站 我用getValueAt得到JTable中的数据值,我怎么把他转化成int, C#该怎样对注册表操作呢? Generics 求有向图中两点间的所有路径(有限几个点的路径以解决,要求在已知网络图中读入节点数据信息怎么办?) Hibernate load与get什么时候用
第一用正则,这是最快的,但是歧义也多。
时间足够多哪编写类吧。
遍历,一个字符一个字符读
,注意< > = / " 和空格这几个特殊字符和字符的组合
不使用dom4j那就只好这样啦.也没什么难的,就是写起来烦.
if ("".equals(xmlPath))
return;
DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance();
DocumentBuilder dombuilder = null;
InputStream is = null;
try {
dombuilder = domfac.newDocumentBuilder();
is = new FileInputStream(xmlPath);
Document doc = dombuilder.parse(is);
Element root = doc.getDocumentElement();
NodeList pdm = root.getChildNodes();
……
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (SAXException ex) {
ex.printStackTrace();
} catch (IOException ec) {
ec.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
} }…………
…………
/**
* 辅助方法 从节点列表中得到节点为nodeName的字段。//此方法可以写成递归
*
* @param nodelist
* @param nodeName
* @return
*/
private static Node getNode(NodeList nodelist, String nodeName) {
Node node = null;
// 注意:for循环可以优化:把节点名称和Node当做参数。
for (int i = 0; i < nodelist.getLength(); i++) {
node = nodelist.item(i);
if (nodeName.equals(node.getNodeName()))
break;
}
return node;
}