package test.com;

import java.io.FileInputStream;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class XmlParser {
public static void main(String[] args) throws Exception {
getXML("src/parameters.xml","HolderName");

readXmlFile("src/Accounts.xml");
}

/**
* @desc 根据key属性的值,获取节点的值
*
*
*/
public static String getXML(String sqlXMLPath, String node) throws Exception {

DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
FileInputStream xmlInputStream = new FileInputStream(sqlXMLPath);
DocumentBuilder builder = builderFactory.newDocumentBuilder();
Document document = builder.parse(xmlInputStream);

Node n = document.getChildNodes().item(0);
NodeList nl = n.getChildNodes();

for (int i = 0; i < nl.getLength(); i++) {
if (!nl.item(i).getNodeName().equals("#text")) {
Element e = (Element) nl.item(i);
System.out.println(nl.item(i).getNodeName() + "\t" + e.getAttribute("key") + "\t" + nl.item(i).getTextContent());
String key = e.getAttribute("key");
String value = nl.item(i).getTextContent();
if (key.equals(node)) {
return value;
}
}
}
return null;
}

}

public static void readXmlFile(String fileName) throws Exception {
FileInputStream xmlInputStream = new FileInputStream(fileName);

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); // 返回documentBuilderFactory对象
DocumentBuilder db = dbf.newDocumentBuilder();// 返回db对象用documentBuilderFatory对象获得返回documentBuildr对象
Document dt = db.parse(xmlInputStream); // 得到一个DOM并返回给document对象
Element element = dt.getDocumentElement();// 得到一个elment根元素
System.out.println("根元素:" + element.getNodeName()); // 获得根节点
NodeList childNodes = element.getChildNodes(); // 获得根元素下的子节点
for (int i = 0; i < childNodes.getLength(); i++) // 遍历这些子节点
{
Node node1 = childNodes.item(i); // childNodes.item(i);
// 获得每个对应位置i的结点
if ("Account".equals(node1.getNodeName())) {
// 如果节点的名称为"Account",则输出Account元素属性type
System.out.println("\r\n找到一个账号. 所属区域:s" + node1.getAttributes().getNamedItem("type").getNodeValue() + "$$");
NodeList nodeDetail = node1.getChildNodes(); // 获得<Accounts>下的节点
for (int j = 0; j < nodeDetail.getLength(); j++) { // 遍历<Accounts>下的节点
Node detail = nodeDetail.item(j); // 获得<Accounts>元素每一个节点
if ("code".equals(detail.getNodeName())) // 输出code
System.out.println("卡号: " + detail.getTextContent());
else if ("pass".equals(detail.getNodeName())) // 输出pass
System.out.println("密码: " + detail.getTextContent());
else if ("name".equals(detail.getNodeName())) // 输出name
System.out.println("姓名: " + detail.getTextContent());
else if ("money".equals(detail.getNodeName())) // 输出money
System.out.println("余额: " + detail.getTextContent());
}
}
}

}

<?xml version="1.0" encoding="UTF-8"?>

<parameters>
<parameter key="HolderName">测试</parameter>
<parameter key="save-holder">1</parameter>
<parameter key="HolderEmail">ceshi@ceshi.com</parameter>
<parameter key="HolderCardType">3</parameter>
<parameter key="HolderCardNo">asdasd</parameter>
<parameter key="HolderSex">1</parameter>
<parameter key="HolderMobile">13333333333</parameter>
</parameters>

<?xml version="1.0" encoding="UTF-8"?>
<Accounts>
<Account type="by0003">
<code>100001</code>
<pass>123</pass>
<name>李四</name>
<money>1000000.00</money>
</Account>
<Account type="hz0001">
<code>100002</code>
<pass>123</pass>
<name>张三</name>
<money>1000.00</money>
</Account>
</Accounts>

Java读取xml配置文件的更多相关文章

  1. java 读取XML文件作为配置文件

    首先,贴上自己的实例: XML文件:NewFile.xml(该文件与src目录同级) <?xml version="1.0" encoding="UTF-8&quo ...

  2. 【XML配置文件读取】使用jdom读取XML配置文件信息

    在项目中我们经常需要将配置信息写在配置文件中,而XML配置文件是常用的格式. 下面将介绍如何通过jdom来读取xml配置文件信息. 配置文件信息 <?xml version="1.0& ...

  3. JAVA读取XML文件并解析获取元素、属性值、子元素信息

    JAVA读取XML文件并解析获取元素.属性值.子元素信息 关键字 XML读取  InputStream   DocumentBuilderFactory   Element     Node 前言 最 ...

  4. java读取properties配置文件总结

    java读取properties配置文件总结 在日常项目开发和学习中,我们不免会经常用到.propeties配置文件,例如数据库c3p0连接池的配置等.而我们经常读取配置文件的方法有以下两种: (1) ...

  5. Java读取xml数据

    xml中的代码 <?xml version="1.0" encoding="UTF-8"?> <books id="aaa" ...

  6. java读取xml文件报“org.xml.sax.SAXParseException: Premature end of file” .

    背景:java读取xml文件,xml文件内容只有“<?xml version="1.0" encoding="UTF-8"?>”一行 java读取该 ...

  7. java读取XML文件的四种方式

    java读取XML文件的四种方式 Xml代码 <?xml version="1.0" encoding="GB2312"?> <RESULT& ...

  8. java读取 xml文件

    java读取xml文件的四种方法  转自https://www.cnblogs.com/lingyao/p/5708929.html Xml代码 1 <?xml version="1. ...

  9. [drp 3]读取Xml配置文件,连接数据库

    导读:之前看一本XML的书,里面说到了对于XML的操作问题,但由于各方面的原因,一直没有总结.这次借着做项目,就总结总结对于XML文件的利用.主要是从配置数据库连接和保存数据这两方面来的.这篇博客介绍 ...

随机推荐

  1. axis2生成客户端代码

    通过aix2生成客户端代码需要准备相应的包,然后执行命令,步骤如下: 一.所需包准备 下载axis2-1.6.2-bin.zip,解压从lib包中取出 jaxrpc.jar wsdl4j-1.6.2. ...

  2. java基础1.-------抽象类,抽象方法

    抽象类:抽象类不能实例化,类中的方法必须经过子类的重写实现 类里的方法是public修饰时,子类可重写也可不重写 类的方法是abstract修饰时,方法是抽象方法,子类必须重写该方法 类的方法用fin ...

  3. 弹出层layer的使用

    弹出层layer的使用 Intro layer是一款web弹层组件,致力于服务各个水平段的开发人员.layer官网:http://layer.layui.com/ layer侧重于用户灵活的自定义,为 ...

  4. CRM 2013 相关下载 / 2013-10-11

        CRM 2013的安装文件,软件开发工具包(Sdk)以及实施指南,在微软官方网站已经有下载了.     具体地址如下: Name Url 发布日期 语言版本 说明 CRM Server htt ...

  5. Android关于listView的BaseAdapter以及getView的三级优化

    1.4个重写方法的含义 自定义Adapter继承自BaseAdapter(通用适配器)   getCount(); getItem(); getItemId(); getViewTypaCount() ...

  6. iOS - GitHub干货分享(APP引导页的高度集成 - DHGuidePageHUD - ①)

    好长时间没更新博客, 是时候来一波干货分享了;APP引导页话不多说每一个APP都会用到,分量不重但是不可缺少,不论是APP的首次安装还是版本的更新,首先展现给用户眼前的也就只有它了吧,当然这里讲的不是 ...

  7. ListView之点击展开菜单

    一.概述 ListView点击item显示菜单是要实现这样的效果: 需要实现的逻辑如下: 1)点击一个普通item,展开当前菜单,同时关闭其他菜单 2)点击一个已展开的菜单,隐藏当前菜单 3)将展开菜 ...

  8. js动态添加事件-事件委托

    作者:白狼 出处:http://www.manks.top/javascript-dynamic-event.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给 ...

  9. iOS系列 基础篇 03 探究应用生命周期

    iOS系列 基础篇 03 探究应用生命周期 目录: 1. 非运行状态 - 应用启动场景 2. 点击Home键 - 应用退出场景 3. 挂起重新运行场景 4. 内存清除 - 应用终止场景 5. 结尾 本 ...

  10. (四)Spark集群搭建-Java&Python版Spark

    Spark集群搭建 视频教程 1.优酷 2.YouTube 安装scala环境 下载地址http://www.scala-lang.org/download/ 上传scala-2.10.5.tgz到m ...