import w c dom ;
import javax xml parsers ;
import java io ;
public class Parse{
//Document可以看作是XML在内存中的一个镜像 那么一旦获取这个Document 就意味着可以通过对
//内存的 *** 作来实现对XML的 *** 作 首先第一步获取XML相关的Document
private Document doc=null;
public void init(String xmlFile) throws Exception{
//很明显该类是一个单例 先获取产生DocumentBuilder工厂
//的工厂 在通过这个工厂产生一个DocumentBuilder
//DocumentBuilder就是用来产生Document的
DocumentBuilderFactory dbf=DocumentBuilderFactory newInstance();
DocumentBuilder db=dbf newDocumentBuilder();
//这个Document就是一个XML文件在内存中的镜像
doc=db parse(new File(xmlFile));
}
//该方法负责把XML文件的内容显示出来
public void viewXML(String xmlFile) throws Exception{
this init(xmlFile);
//在xml文件里 只有一个根元素 先把根元素拿出来看看
Element element=doc getDocumentElement();
System out println( 根元素为: +element getTagName());
NodeList nodeList=doc getElementsByTagName( dbstore );
System out println( dbstore节点链的长度: +nodeList getLength());
Node fatherNode=em( );
System out println( 父节点为: +fatherNode getNodeName());
//把父节点的属性拿出来
NamedNodeMap attributes=fatherNode getAttributes();
for(int i= ;i<attributes getLength();i++){
Node attribute=em(i);
System out println( dbstore的属性名为: +attribute getNodeName()+ 相对应的属性值为: +attribute getNodeValue());
}
NodeList childNodes = fatherNode getChildNodes();
System out println(childNodes getLength());
for(int j= ;j<childNodes getLength();j++){
Node childNode=em(j);
//如果这个节点属于Element 再进行取值
if(childNode instanceof Element){
//System out println( 子节点名为: +childNode getNodeName()+ 相对应的值为 +childNode getFirstChild() getNodeValue());
System out println( 子节点名为: +childNode getNodeName()+ 相对应的值为 +childNode getFirstChild() getNodeValue());
}
}
}
public static void main(String[] args)throws Exception{
Parse parse=new Parse();
//我的XML文件
parse viewXML( netct xml );
}
lishixinzhi/Article/program/Java/hx/201311/26710
java中不是有个读取xml文件的类吗?之间调用那类读取出来,然后用取节点的方法去取对应节点的里的值。等下给你代码。
public class ReaderXml {
private static String filename = "E:\\workplace\\readerxml\\bin\\reader\\xml\\readerxml";
// private static Config config;
public static void main(String []args) throws Exception{
//这里用反射机制
DocumentBuilderFactory domfac=DocumentBuilderFactorynewInstance();
DocumentBuilder dombuilder=domfacnewDocumentBuilder();
//读取文件流
InputStream is=new FileInputStream(filename);
Document doc=dombuilderparse(is);
Element root=docgetDocumentElement();
//获取所有xml节点
NodeList dbinfo=rootgetChildNodes();
if(dbinfo!=null){
for(int i=0;i<dbinfogetLength();i++){
//获取节点判断
Node db=dbinfoitem(i);
//如果是Hardwares节点,也就是你xml文件的最顶处的节点
if(dbgetNodeName()equals("Hardwares")){
//获取第二个节点包含的所有节点
NodeList list=dbgetChildNodes();
for(int y=0;y<listgetLength();y++){
Node n=listitem(y);
//如果节点等于Hardware
if(ngetNodeName()equals("Hardware")){
//获取Hardware节点中的所有节点
NodeList CnodeList=ngetChildNodes();
//取出Hardware里面的所有节点
for(int k=0;k<CnodeListgetLength();k++){
//取出节点
Node cn=CnodeListitem(k);
//去掉里面的#text文件节点。没用,这个不是你配置的节点,应该是xml文件隐藏的
if(!cngetNodeName()equals("#text")){
//打印你所配置的所有节点 Systemoutprintln("node["+k+"]="+cngetNodeName()+" nodeValue["+k+"]="+cngetTextContent());
}
}
}
}
}
}
}
}
}
//具体你要干嘛自己弄了!
可以用微软的IXMLDOMDocument2, 也可以用CMarkup,CMarkup可以在网上搜他怎么用,VS不自带的,要自己在网上下载代码。感觉CMarkup更容易 *** 作。注意一点就是假如在一个根element下有多个子element,要注意读子element的顺序,从上往下读,不能从下往上读,它会读不到。
以CMarkup为例:
CMarkup readXML;
if( !readXMLload(xml文件名);
return;
readXMLFindElem("class");
这时候可以用reaXMLGetData()取到132这个值
assets文件夹里面的文件都是保持原始的文件格式,需要用AssetManager以字节流的形式读取文件。
assets的读取方式:
1 先在Activity里面调用getAssets() 来获取AssetManager引用。
2 再用AssetManager的open(String fileName, int accessMode) 方法则指定读取的文件以及访问模式就能得到输入流InputStream。
3 然后就是用已经open file 的inputStream读取文件,读取完成后记得inputStreamclose() 。
4调用AssetManagerclose() 关闭AssetManager。
需要注意的是,来自Resources和Assets 中的文件只可以读取而不能进行写的 *** 作
import javautilList;
import orgdom4jDocument;
import orgdom4jDocumentException;
import orgdom4jElement;
import orgdom4jioSAXReader;
public class XmlTester {
public static void main(String[] args) throws DocumentException {
// 使用了dom4j解析xml
// 读取目录下用来测试的testxml文件,取得xml主内容
Document document = new SAXReader()read("src/abc/testxml")getDocument();
int i = 1;
// 遍历文档根节点(wuxialist)下的子节点列表,即txtbook节点的集合
for(Element txtbook : (List<Element>)documentgetRootElement()elements()){
//取得txtbook节点下的name节点的内容
Systemoutprintln(i+""+txtbookelement("name")getText());
i++; //原来这里少些了这一行,先补上
}
}
}
解析xml文件时首先获取到一个的实例是
在网络上传输的数据是格式化后的数据,这种数据会有一定的结构规格和语义,当另一方收到数据消息之后就可以按照相同的结构规格进行解析,从而取出他想要的那部分内容。
最常用的格式有两种:XML和JSON
· 解析XML格式的数据有多种方式,这里介绍两种:Pull解析和SAX解析。
比起XML,JSON的主要优势在于它的体积更小,在网络上传输的时候更省流量。缺点在于,它的语义较差,看起来不如XML直观。(代码量更少)
· 解析JSON数据的方法有多种方法,可以使用官方提供的JSONObject,也可以使用谷歌的开源库GSON,另外,第三方开源库如Jackson,FastJson等也非常不错。
//初始化一个xml实例
XmlDocument xml=new XmlDocument();
//导入指定xml文件
xmlLoad(path);
xmlLoad(>
以上就是关于JAVA读取xml文件中节点值全部的内容,包括:JAVA读取xml文件中节点值、java读取xml文件内容、XML文件内容如何读取(C或C++)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)