- 浏览: 109658 次
- 性别:
- 来自: 北京
-
最新评论
-
nwpu7:
解决问题,感谢感谢
org.hibernate.hql.ast.HqlToken 错误weblogic异常 -
zhangna307:
如果已经有对应的hibernte-cfg.xml文件,还是报这 ...
Could not instantiate cache implementation异常处理 -
zzw118:
不错,解决了我的问题!
Could not instantiate cache implementation异常处理 -
flank.tai:
女孩的技术都这么牛!!顶。不过图片看不了呀!!!
深度技术 USB启动维护盘制作工具 -
supercode:
dell的服务器与自己diy的相同配置,价格高出多少左右
Dell PowerEdge 2800 服务器 Windows 2003安装手册
org.w3c.dom 解析XML文件 可以解析出节点属性
xml文件如下:
<smil xmlns="http://www.w3.org/2000/SMIL20/CR/Language">
<head>
<layout>
<root-layout height="100%" width="100%" />
<region id="Image" top="0" left="0" height="80%" width="100%"/>
<region id="Text" top="80%" left="0" height="20%" width="100%"/>
</layout>
</head>
<body>
<par dur = "5000ms">
<img region="Image" src="/contentlib/32/35/92/52.jpg"/>
<audio src="/contentlib/32/36/58.wav"/>
<text region="Text" src="/contentlib/1/3/29/12.txt"/>
</par>
</body>
</smil>
要解析出xml文件节点属性,比如 要得出 节点<img region="Image" src="/contentlib/32/35/92/52.jpg"/> 属性src的值(/contentlib/32/35/92/52.jpg)。
下面是源码,可以直接解析xml文件 ,和文件流。
package com.huawei.idea.mkt.common;
import java.io.InputStream;
import java.io.IOException;
import java.util.ArrayList;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.FactoryConfigurationError;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import org.xml.sax.SAXException;
/**
* <p>Description: xml解析类</p>
*
*/
public class XmlParser
{
private static DocumentBuilderFactory factory;
private static DocumentBuilder builder;
private Document doc;
private Element root;
private String fileName;
private InputStream inputstream;
/**
* 解析文件xml
* @param file String
*/
public XmlParser(String file)
{
if (file == null)
{
return;
}
this.fileName = file;
try
{
load();
}
catch (IOException ex)
{
ex.printStackTrace();
return;
}
}
/**
* 解析输入流xml
* @param input InputStream
*/
public XmlParser(InputStream input)
{
if (input == null)
{
return;
}
inputstream = input;
try
{
loadStream();
}
catch (IOException ex)
{
ex.printStackTrace();
return;
}
}
/**
* 获取XML文件中指定标签所对应的节点集合
* @param key String 标签名字
* @return ArrayList 指定标签对应的节点集
*/
public ArrayList findNodes(String key)
{
NodeList nodes = root.getElementsByTagName(key);
ArrayList nodeList = new ArrayList();
for (int i = 0; i < nodes.getLength(); i++)
{
nodeList.add(i, (Node) nodes.item(i));
}
return nodeList;
}
/**
* 初始化XML
* @throws IOException
*/
public void loadStream()
throws IOException
{
try
{
loadXMLParser();
doc = builder.parse(inputstream);
root = doc.getDocumentElement();
}
catch (IOException ex)
{
ex.printStackTrace();
}
catch (SAXException ex)
{
ex.printStackTrace();
}
finally
{
inputstream.close();
}
}
/**
* 初始化XML
* @throws IOException
*/
public void load()
throws IOException
{
try
{
loadXMLParser();
doc = builder.parse(fileName);
root = doc.getDocumentElement();
}
catch (SAXException SaxEx)
{
SaxEx.printStackTrace();
throw new IOException(SaxEx.getMessage() + "XML file parse error:"
+ SaxEx.getException());
}
catch (IOException IoEx)
{
IoEx.printStackTrace();
throw new IOException(IoEx.getMessage() + "XML file parse error:");
}
catch (Exception ex)
{
ex.printStackTrace();
throw new IOException(ex.getMessage() + "XML file parse error:");
}
}
/**
* 初始化XML
* @throws IOException
*/
private void loadXMLParser()
throws IOException
{
if (builder == null)
{
try
{
factory = DocumentBuilderFactory.newInstance();
builder = factory.newDocumentBuilder();
}
catch (ParserConfigurationException ex)
{
throw new IOException("XML Parser load error:"
+ ex.getLocalizedMessage());
}
catch (FactoryConfigurationError ConfErrEx)
{
throw new IOException("XML Parser load error:"
+ ConfErrEx.getLocalizedMessage());
}
catch (Exception Ex)
{
throw new IOException("XML Parser load error:"
+ Ex.getLocalizedMessage());
}
}
}
/**
* 获取XML文件中某级节点下一级元素的值
* @param node 节点对象
* @param subTagName subTagName元素的标签名
* @return String 该标记元素的的内容
*/
public static String getSubTagValue(Node node, String subTagName)
{
String returnString = "";
if ((node != null) && (subTagName != null))
{
NodeList children = node.getChildNodes();
for (int innerLoop = 0; innerLoop < children.getLength(); innerLoop++)
{
Node child = children.item(innerLoop);
if ((child != null) && (child.getNodeName() != null)
&& (child.getNodeName().equals(subTagName)))
{
Node grandChild = child.getFirstChild();
if (grandChild != null)
{
return grandChild.getNodeValue();
}
}
}
}
return returnString;
}
/**
* 获取XML文件中某单一值
* @param node 节点对象
* @param subTagName subTagName元素的标签名
* @return String 该标记元素的的内容
*/
public String getresult(String name)
{
String result = "";
ArrayList resultlist = findNodes(name);
if ((resultlist != null) && (resultlist.size() > 0))
{
for (int i = 0; i < resultlist.size(); i++)
{
Node node = (Node) resultlist.get(i);
if (node instanceof Element)
{
if ((node != null) && (node.getNodeName() != null)
&& (node.getNodeName().equals(name)))
{
Node grandChild = node.getFirstChild();
if (grandChild != null)
{
result = grandChild.getNodeValue();
}
}
}
}
}
return result;
}
//
public String getAttr(String name,String attrName)
{
String result = "";
ArrayList resultlist = findNodes(name);
if ((resultlist != null) && (resultlist.size() > 0))
{
for (int i = 0; i < resultlist.size(); i++)
{
Node node = (Node) resultlist.get(i);
if (node instanceof Element)
{
if ((node != null) && (node.getNodeName() != null)
&& (node.getNodeName().equals(name)))
{
//遍历整个xml某节点指定的属性
NamedNodeMap attrs=node.getAttributes();
if(attrs.getLength()>0 && attrs!=null)
{
Node attr=attrs.getNamedItem(attrName);
result=attr.getNodeValue();
}
}
}
}
}
return result;
}
public static void main(String[] args)
{
String file="D:\\common\\Tomcat60\\smil.smil";
XmlParser xml =new XmlParser(file);
System.out.println(xml.getAttr("text","src"));
}
}
发表评论
-
求100以内的质数
2011-01-11 12:42 966题目:除了能被自身和1整除外,不能被其他数整除的数,为素数 ... -
整理开始
2010-03-15 16:49 801将近半年没来javaeye了,自己的知识没能及时梳理。从今天开 ... -
dddd
2009-09-16 17:11 824ddddddddd -
java文件上传下载
2009-09-16 17:07 5537文件上传在web应用中非常普遍,要在jsp环境中实现文件上传功 ... -
实现Ext表单对checkBoxGroup的统一管理
2009-08-11 13:21 13841 对于类型是checkboxgroup的数据,数据库中保存数 ... -
cvsnt 配置
2009-06-03 15:51 1122CvsNT设置1.安装CvsNT,并 ... -
发生算术溢出或其它算术异常。
2009-05-26 17:16 3753今天报了一个bug,sql在DB2执行的时候报“发生算术溢出或 ... -
回车代替点按钮提交
2009-05-22 16:46 1526输入框+按钮 完成的操作和 输入框+回车 完成一样的操作 & ... -
eclipse下修改代码重启tomcat的问题
2009-05-04 17:40 2284忍受了很久的eclipse下修改代码重启tomcat的问题,今 ... -
urlrewritefilter 例子
2009-04-17 17:31 1168我在tomcat下跑通了一个例子,关于urlRewritefi ... -
正则表达式
2009-03-20 17:35 852如果你曾经用过Perl或任何其他内建正则表达式支持的语言 ... -
正则表达式大全
2009-03-20 16:35 903常用正则表达式大全! ... -
Could not instantiate cache implementation异常处理
2009-03-06 14:34 8036今天遇到了一个很奇怪的问题 我照例增加了一套新功能,但一切就 ... -
整理分页
2009-02-24 16:28 882从今天开始打算整理一下分页、上传下载、程序里调用存储 ... -
Dell PowerEdge 2800 服务器 Windows 2003安装手册
2009-02-06 15:40 2258Dell PowerEdge 2800 服务器 W ... -
新年第一天的工作
2009-02-05 11:50 762初十一来上班了,工作安排是解决河北bug,但是公司服务器dow ... -
深度技术 USB启动维护盘制作工具
2009-02-05 11:27 5945前言 大容量的移动硬盘和U盘已经越来越普及,很多朋友希望将 ... -
Tomcat:IOException while loading persisted session
2009-01-05 10:20 888错误描述:....while loading persiste ... -
display tag
2008-12-29 10:19 4330DisplayTag Tutorial by DarrenWa ... -
eclipse快捷键大全
2008-12-17 17:11 623Ctrl+1 快速修复(最经典的快捷键,就不用多说了)Ctrl ...
相关推荐
本篇文章将深入探讨Android中的DOM解析XML文件,包括其基本原理、实现步骤和一些实用技巧。 ### 1. DOM解析的基本概念 DOM解析是一种将XML文件转换为内存中对象模型的方法。它将XML文档视为一棵树,其中每个元素、...
使用DOM解析XML的基本步骤如下: 1. **导入必要的库**:在Java中,DOM解析功能主要由`javax.xml.parsers`和`org.w3c.dom`包提供。因此,首先需要在代码中导入这些库: ```java import javax.xml.parsers....
通过使用 W3C DOM 接口,我们可以轻松地访问和操作 XML 文档中的元素和属性,从而实现了对 XML 文档的解析和处理。 四、结语 本文介绍了 Java 中的 DOM 解析 XML 实例,包括使用 DOM 解析 XML 文档的步骤、W3C DOM...
在Java中,`org.w3c.dom`包提供了DOM解析XML的基础接口和类。以下是DOM解析XML的基本步骤: 1. 加载XML文档:首先,我们需要一个`DocumentBuilderFactory`实例来配置和创建`DocumentBuilder`,然后用`...
首先,解析XML文件主要涉及`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`类。以下是一个简单的示例: 1. 创建`DocumentBuilderFactory`实例,它是生成`DocumentBuilder`对象的工厂类。 2. ...
在Android中,我们可以使用`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`等类来实现DOM解析。以下是一个简单的DOM解析XML文件的步骤: 1. 创建`DocumentBuilderFactory`实例: ```java ...
1. DOM解析:使用DOM解析XML文件时,可以查找特定节点并修改其属性或文本内容。例如: ```java import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.Transformer; import javax.xml....
标题“java_dom解析xml xml java”表明了本文档的主题是关于如何使用Java中的DOM技术来解析XML文件。 #### 描述分析 描述中提到这是一个适合新手入门的内容,并给出了一个简单的XML示例。该XML文档包含了一个`...
这段代码展示了如何使用DOM解析XML,找到特定的元素并打印其属性和内容。 4. 性能优化: - 延迟加载(Lazy Loading):如果XML文件较大,可使用SAX解析器进行部分加载,避免一次性加载整个文档。 - 使用DOM4J或...
1. **导入库**:使用DOM解析XML时,我们需要导入javax.xml.parsers和org.w3c.dom相关的库。例如: ```java import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; ...
使用DOM解析XML的基本步骤如下: 1. 创建DocumentBuilderFactory实例。 2. 使用DocumentBuilderFactory创建DocumentBuilder实例。 3. 使用DocumentBuilder的parse()方法解析XML文件,得到Document对象。 4. 通过...
在Java中,DOM解析XML文件主要涉及到`javax.xml.parsers.DocumentBuilderFactory`和`javax.xml.parsers.DocumentBuilder`这两个类。首先,我们创建一个`DocumentBuilderFactory`实例,然后用它来获取一个`...
以下是一个使用Java DOM解析XML文件的示例代码片段: ```java import java.io.InputStream; import java.util.ArrayList; import java.util.List; import javax.xml.parsers.DocumentBuilder; import javax.xml....
【DOM解析XML】 在Java中,解析XML文档有多种方式,其中DOM(Document Object Model)和SAX(Simple API for XML)是最常见的两种。DOM是一种基于树形结构的XML处理方式,它将整个XML文档加载到内存中,形成一个完整...
在"XML解析之DOM"这一主题中,我们将深入探讨DOM解析器如何工作,以及如何通过DOM API获取XML文件中的信息。DOM解析器将整个XML文档加载到内存中,形成一个节点树,每个元素、属性、文本等内容都对应一个节点。这种...
在Java编程环境中,解析XML文件是一项常见的任务,特别是在数据处理和集成中。XML(Extensible Markup Language)是一种结构化数据格式,广泛用于存储和传输数据。本教程将介绍如何使用Java解析XML文件,并将解析...
在Android项目中,我们需要导入以下库以使用DOM解析XML: ```java import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; import org.w3c.dom.Document; import org.w3c....
DOM解析器的优点在于提供了一种灵活且易于使用的API,可以方便地进行添加、删除和修改XML内容。以下是一个DOM解析的例子: ```java import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document...
首先,我们需要导入Java的`javax.xml.parsers`和`org.w3c.dom`包,它们提供了DOM解析XML所需的类和接口。 ```java import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; ...
XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件、文档存储等领域。在处理XML文档时,有三种主要的解析...根据具体的应用场景和需求,开发者可以选择合适的XML解析方法。