dom解析xml文档过程总结
来源:互联网 发布:网站推广优化平台 编辑:程序博客网 时间:2024/05/21 07:13
先得到dom解析后的文档树,和root元素.
然后递归解析,这个程序中没说明如何保存相应节点的值,如果要用hashtable数据结构保存各个节点的值,程序还得做相应调整,因为在这个递归中textvalue是在子调用中输出的,还得返回到上一层,跟父函数的节点名字对应
DocumentBuilderFactory domfac=DocumentBuilderFactory.newInstance();
try {
DocumentBuilder dombuilder=domfac.newDocumentBuilder();
//InputStream is=new FileInputStream("library.xml");
InputStream is=new FileInputStream("library.xml");
Document doc=dombuilder.parse(is);
Element root=doc.getDocumentElement();//根节点
}
/*******************************************************************/
得到root后,进行递归调用,解析xml
public void digui(Node root)
{
if(root.getNodeType()==Node.TEXT_NODE)
{
//root.getNodeValue()为所要文本
return ;
}
//获得root节点对应的所有属性值
getAttributes(root);
for(Node node=root.getFirstChild();node!=null;node=node.getNextSibling())
{//这里用这个方式比较合适,如果把textvalue拿到这里来输出,就需要判断是不是ELEMENT_NODE类型,因为
//textvalue也是node的孩子,但它是TEXT_NODE类型的,无孩子节点
//对于一个节点,node.getFirstChild().getNodeValue()才是这个节点的value
digui(node);
}
}
public void getAttributes(Node root)//获得root节点的所有属性值
{
NamedNodeMap map = root.getAttributes();//输出某个元素的属性部分
if(map==null)
{
System.out.println("point null");
}
else
{
for(int i=0;i<map.getLength();i++)//输出某个元素的属性部分,这里的getLength函数得到的长度也确实是
{ //root节点所拥有的属性的个数
Node node = map.item(i);
Node nodename = map.getNamedItem("size");
if(node.getNodeType()==Node.ATTRIBUTE_NODE)//这个其实可以不判断,肯定是属性节点
{
if(node.getNodeName().equalsIgnoreCase("size"))
{
System.out.println("size: "+node.getNodeValue());
}
else if(node.getNodeName().equalsIgnoreCase("height"))
{
System.out.println("height: "+node.getNodeValue());
}
}
}
}
}
- dom解析xml文档过程总结
- Dom解析XML文档
- DOM 解析 XML 文档
- DOM解析XML文档
- DOM解析XML文档
- DOM解析XML文档
- DOM解析XML文档
- DOM解析XML文档
- Dom解析XMl文档
- DOM解析XML文档
- dom解析XML文档
- DOM解析XML文档
- dom解析xml文档
- DOM解析XML文档
- DOM解析XML文档
- DOM将XML文件解析为文档的过程
- DOM、SAX、SimpleXML方式解析XML文档总结
- jaxp解析器用dom方式操作xml文档的总结
- sax解析xml文件过程总结
- 三句话是如何暴露自己不职业的
- 一行排三个图片 /然后自动换行
- 用分区魔术师把linux所占的分区删除后重写mbr
- Firefox上网冲浪更惬意,三招Firefox高级使用技巧
- dom解析xml文档过程总结
- 心得笔记——JavaScript DOM
- CMM/CMMI的发展及应用
- null
- Can't allocate space for object 'syslogs' in database 'ge' because 'logsegment' segment is full/has no free extents. If you ran
- java中的递归
- 十二星座本周运势(2007.9.15-2007.9.21)
- 数据驱动在QTP中的运用(三) - 使用ADODB导入EXCEL数据文件
- 数据库设计经验谈(转)