spring的xml配置文件怎么写_育才学习网
可以在节点中加属性例如:<body id = "" name = "">java代码解析一般用DOM4j.分两种类型的解析方式:1.DOM: Document Object Model 文档对象模型树形结构装载到内存中.完成后才开始解析.缺点:如果文件比较大,内存有压力,时间会延迟.优点:可以对树形结构做任何操作:加节点,删节点,遍历。
2.SAX: Simple API for XML流(Stream)的特征,解析可以立即开始.不保存数据. 对内存无压力.不能修改节点.适合大文件的解析.下面附上代码:public static List parseCustomXML(String fileName) { // 定义解析器 SAXReader saxReader = new SAXReader(); List eleList = new ArrayList(); // 开始解析,返回文档对象 /* * totalLenght bodyLenght jydm msgType sendSign msgCheckCode serviceName msgAgreement cprq fkrzh pjhm je zfmm jgh yhdm */ try { Document doc = saxReader.read(new File(fileName)); Element root = doc.getRootElement();// 获取根节点 Element msg = root.element("msg"); Iterator itEle = msg.elementIterator("element");// 遍历msg节点下的所有element节点 while (itEle.hasNext()) { Element element = (Element) itEle.next(); String value = element.getText(); //测试 System.out.println(value); eleList.add(value); Iterator itAttr = element.attributeIterator();// 遍历每一个element节点的所有属性 while (itAttr.hasNext()) { Attribute attr = (Attribute) itAttr.next(); //String keyAttr = attr.getName(); String valueAttr = attr.getValue(); //测试 System.out.println(valueAttr); eleList.add(valueAttr); } } } catch (DocumentException e) { e.printStackTrace(); } return eleList; }有不明白的 在帮你分析。
2.xml作为配置文件的好处
1.XML格式是W3C的标准,各种平台通用,可移植性好。而Windows下的注册表文件,基本上是黑盒,也不可能被移植到非Windows环境下。
2.XML提供了一种树形层次结构,可以很方便的定位某一功能块。而INI文件不提供这种便利。
3.从写的角度看,几乎所有的应用程序都能处理XML文件,并且通过DOM提供的方法可以很快捷的对XML文件进行操作,而Reg只能用特定的软件进行读取操作,而INI很难进行方便的操作。
4.从读的角度看,XML文件提供了一种简洁的自解释的标记方法,几乎不需要说明文档,就能理解XML格式的配置文件的意义。而Reg很难辨识,INI虽然大多情况下比较容易理解,但不可能包含太多的内容。
5.XML高度可扩展,只要遵循一定的规则,XML的可扩展性几乎是无限的,而且这种扩展并不以结构混乱或影响基础配置为代价。而庞大的INI文件几乎一定是混乱的。
当然,即使XML有如此多的好处,它也存在一定的缺点,就是在表达较短的配置时,没有INI简练。而且因为它有比较严格的格式审查机制,容错性也不是特别好。但在绝大多数情况下,以XML文件做为配置文件,从长远来看,还是最好的选择。
3.如何从XML文件里面读取配置文件
类
public string GetConStr()
{
try
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Server.MapPath("App_Data\\config.xml"));
XmlNode node1 = xmlDoc.SelectSingleNode("configuration/ConnectionStrings1/DataSource");
XmlNode node2 = xmlDoc.SelectSingleNode("configuration/ConnectionStrings1/uid");
XmlNode node3 = xmlDoc.SelectSingleNode("configuration/ConnectionStrings1/pwd");
string strcon = "Data Source=" + node1.InnerText + ";uid=" + node2.InnerText + ";pwd=" + node3.InnerText;
return strcon;
}
catch
{
Response.Redirect("Config.aspx");
return null;
}
}
调用
IConfig iconfig = new IConfig();
iconfig .GetConStr();
4.如何读取XML配置文件
在我们的程序中,通常要有一些根据主机环境确定的变量。
比如数据库访问用户名和密码,不同的主机可能设置不一样。只要更改XML配置文件,就可以正常运行。
localhostsqlnameusernamepassword 上面这个myenv.xml配置文件一般是放在tomcat的WEB-INF/classes目录下。 我们编制一个Java程序直接读取,将dbhost dbuser dbpassword提取出来供其他程序访问数据库用。
目前使用SAX比较的多,与DOM主要区别是 SAX是一行一行读取XML文件进行分析,适合比较大文件,DOM是一次性读入内存,显然不能对付大文件。这里我们使用SAX解析,由于SAX解析器不断在发展,网上有不少文章是针对老版本的。
如果你使用JDK1.4 ,可以参考 使用SAX处理XML文档 一文。这里的程序是根据其改进并且经过实践调试得来的。
对上面myenv.xml读取的Java程序: import org.xml.sax.Attributes;import org.xml.sax.helpers.DefaultHandler;import org.xml.sax.SAXException; import java.util.Properties;//使用DefaultHandler的好处 是 不必陈列出所有方法,public class ConfigParser extends DefaultHandler {////定义一个Properties 用来存放 dbhost dbuser dbpassword的值private Properties props;private String currentSet;private String currentName;private StringBuffer currentValue = new StringBuffer();//构建器初始化propspublic ConfigParser() {this.props = new Properties();}public Properties getProps() {return this.props;} //定义开始解析元素的方法. 这里是将中的名称xxx提取出来.public void startElement(String uri, String localName, String qName, Attributes attributes)throws SAXException {currentValue.delete(0, currentValue.length());this.currentName =qName;}//这里是将之间的值加入到currentValuepublic void characters(char[] ch, int start, int length) throws SAXException { currentValue.append(ch, start, length);}//在遇到结束后,将之前的名称和值一一对应保存在props中public void endElement(String uri, String localName, String qName) throws SAXException {props.put(qName.toLowerCase(), currentValue.toString().trim());}} 上面的这个解析程序比较简单吧? 其实解析XML就是这么简单。 现在我们已经将dbhost dbuser dbpassword的值localhost sqlname username password提取了出来。
但是这只是在在解析器内部,我们的程序还不能访问。需要再编制一个程序。
import java.util.Properties;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;import java.net.URL;public class ParseXML{//定义一个Properties 用来存放 dbhost dbuser dbpassword的值private Properties props; //这里的propspublic Properties getProps() {return this.props;} public void parse(String filename) throws Exception {//将我们的解析器对象化ConfigParser handler = new ConfigParser();//获取SAX工厂对象SAXParserFactory factory = SAXParserFactory.newInstance();factory.setNamespaceAware(false);factory.setValidating(false);//获取SAX解析SAXParser parser = factory.newSAXParser();//得到配置文件myenv.xml所在目录. tomcat中是在WEB-INF/classes//下例中BeansConstants是用来存放xml文件中配置信息的类,可以自己代替或定义URL confURL = BeansConstants.class.getClassLoader().getResource(filename);try{//将解析器和解析对象myenv.xml联系起来,开始解析 parser.parse(confURL.toString(), handler); //获取解析成功后的属性 以后 我们其他应用程序只要调用本程序的props就可以提取出属性名称和值了props = handler.getProps();}finally{factory=null;parser=null;handler=null;}}} 由于我们的XML文件是使用最简单的形式 ,因此解析器相对简单,但是这已经足够对付我们的配置文件了。
5.C# XMl读写配置文件
<config>
<serv_ip>192.168.0.1</serv_ip>
<connect_time>30</connect_time>
<refresh_time>60</refresh_time>
<serv_port>3000</serv_port>
</config>;一般像这样就行了 很简单的
或者多个配置你可以加个item标签如:
<config>
<item>
<serv_ip>192.168.0.1</serv_ip>
<connect_time>30</connect_time>
<refresh_time>60</refresh_time>
<serv_port>3000</serv_port>
</item>
<item>
<serv_ip>192.168.0.2</serv_ip>
<connect_time>30</connect_time>
<refresh_time>60</refresh_time>
<serv_port>3000</serv_port>
</item>
</config>;假定xml文件路径为:path
读取和保存:
using system.xml;
XmlDocument xml = new XmlDocument();//声明xml
xml.Load(path);//按路径读xml文件
xmlnode root=xml.selectsinglenode("config");//指向根节点
xmlnode xn=root.selectsinglenode("serv_ip");//指向根节点下的serv_ip节点
string ip=xn.innertext;//读出里面的值 注意读取的是string 需要类型转换的话自己做
//修改:
xn.innertext="192.168.2.2";
xml.save(path);//保存更改到路径
6.如何编写或从XML配置文件中读取
配置文件是XML配置文件(配置) config文件中会有像许多条目
abcd
xyz
choise1
1. NSIS共有4 XML的插件可供选择; NsisXML(由Wizou).xML插件,NsisXML(乔尔)和NSXML 使用NsisXML(由Wizou):Outfile "$%temp%\NSISTest.exe"
RequestExecutionLevel user
Installdir "$Temp"
Showinstdetails show
!include LogicLib.nsh
Page InstFiles
!define XMLFILE "$instdir\myxml.xml"
Section
StrCpy $9 "Did not exist"
nsisXML::create
nsisXML::load "${XMLFILE}"
${If} $0 = 0
;build a new basic XML file:
nsisXML::create
nsisXML::createProcessingInstruction "xml" 'version="1.0" encoding="UTF-8" standalone="yes"'
nsisXML::appendChild
nsisXML::release $2
${EndIf}
nsisXML::select '/choise'
${If} $2 = 0
StrCpy $1 $0
nsisXML::createElement "choise"
nsisXML::appendChild
${Else}
nsisXML::getText
StrCpy $9 $3
${EndIf}
DetailPrint "Old value: $9"
System::Call 'kernel32::GetTickCount()i.r5' ;Get some "random" value to save
nsisXML::setText "$5"
nsisXML::release $2
nsisXML::save "${XMLFILE}"
nsisXML::release $0
DetailPrint "Saved new value: $5"
SectionEnd
2. 在优先次运行我得到:Old value: Did not exist
Saved new value: 709289703
Completed
并在第二次运行我得到:Old value: 709289703
Saved new value: 709308687
Completed
转载请注明出处育才学习网 » spring的xml配置文件怎么写
2021-09-16 阅读(21425)
本文主要为您介绍罗梅芬用日文怎么写,内容包括伊蕾娜日语怎么写,王雪菲用日文怎么说,张佳怡在日语中怎么写啊怎么读啊。罗 ら ラ ra钰 ぎょく ギョク gyoku潇 しょう シヨウ shou第一列:日语汉字,写法同汉字,都要用繁体,这三个都挺难写的,看
2021-09-16 阅读(10440)
本文主要为您介绍邓先生的英文怎么写,内容包括“邓先生”用英语怎么写,1~40的英文怎么说,漂亮英文beautiful缩写怎么写。1 one 2 two 3 three 4 four 5 five 6 six 7 seven 8 eight 8 nine 10 te
2021-09-16 阅读(9514)
本文主要为您介绍一个人布满皱纹怎么写,内容包括描写人物皱纹的句子,描写人物皱纹的句子,皱纹怎么描写。、老人脸上布满了皱纹,那一条条曲折不均的像是墙上斑驳的印迹,爬满了面容,留下了岁月的痕迹。2、外祖父是一位年过六旬的白发老人。在他
2021-09-16 阅读(7759)
本文主要为您介绍登录接口怎么写,内容包括php登录的接口怎么写,网页登陆接口怎么做,网站登录接口程序怎么做。PHP 接口 接口 使用接口(interface),你可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。我们可以通过int
2021-09-16 阅读(9600)
本文主要为您介绍档案奖惩情况怎么写,内容包括奖惩情况怎么写,个人简历及奖惩情况怎么填写,个人简历里面奖惩情况怎么写。在简历里的“奖励”部分,列出与你所获得的并与你的求职目标相关的荣誉、奖励和奖金。你既可以按时间顺序排列,也可以按
2021-09-16 阅读(8001)
本文主要为您介绍头孢克肟拼音怎么写,内容包括头孢克肟片全名拼音,头孢克肟片全名拼音,头孢克肟的肟念什么。肟[wò] :是含有羰基的醛、酮类化合物与羟胺作用而生成的有机化合物,可以参与许多有机化学反应,例如经典的Beckmann重排就是肟为底
2021-09-16 阅读(7989)
本文主要为您介绍一库搜用日语怎么写,内容包括日语大神来,看动漫里的主人公说一句:恰,一库搜这是什么意思,一库一库;一搜库这两个日语是什么意思怎么写,看片都有“一库”(日语)是什么意。一库的意思就是“出发,出去”的意思。日语「行く」的音译
2021-09-16 阅读(6998)
本文主要为您介绍外租无人机广告怎么写,内容包括求一个无人机创意广告词谢谢巨友们了,求一关于无人机的广告标语,求一关于无人机的广告标语我们公司是做无人机的,新成立的公司,求。DJI大疆创新研发的的MG-1农业植保机专为农村作业环境设计,
2021-09-16 阅读(6531)
本文主要为您介绍河南话que怎么写,内容包括que怎么写,河南话的nenna怎么写,que怎么写。尿一壶(niào yī hú)关系密切,观点一致。例:“他俩今天尿一壶啦。”●尿(niào)⑴、从尿道排泄的液体。⑵、排泄小便。⑶、不放
2021-09-16 阅读(7113)
本文主要为您介绍国学经文的论文怎么写,内容包括国学征文该怎么写,弟子规的400论文,关于国学经典的征文怎么写。“子曰:“温故而知新,可以为师”……小时,总是觉得国学就是没用的,古人写的话,我们还需要背,每次老师教给我们时,我总是会让思想开一
2021-09-16 阅读(5397)
本文主要为您介绍化学实验总结怎么写,内容包括化学实验总结怎么写,化学实验报告小结怎么写,化学实验小结怎么写。化学实验报告的书写: 一般情况下化学实验报告是根据实验步骤和顺序从七方面展开来写的: 1.实验目的:即本次实验所要达到的目标或
2021-09-16 阅读(5825)
本文主要为您介绍蝴蝶豌豆拼音怎么写,内容包括蝴蝶怎么拼音的,豌豆的拼音是什么,蝴蝶的拼音是什么。豌豆的拼音是[wān dòu]。豌豆是豆科一年生攀援草本,高0.5-2米。全株绿色,光滑无毛,被粉霜。叶具小叶4-6片,托叶心形,下缘具
2021-09-15 阅读(6510)
本文主要为您介绍海绵宝宝用英文怎么说,内容包括海绵宝宝用英语怎么说,海绵宝宝用英文怎么说,海绵宝宝英文名是什么。1. SPONGEBOB SQUAREPANTS 近期很夯的一步卡通影片《海绵宝宝》(SpongeBob SquarePants)是一系
2021-09-15 阅读(5422)
本文主要为您介绍茶盏怎么用,内容包括茶盏怎么用我要写一篇200字左右的茶盏的使用说明,求指教,茶盏在茶道中干嘛用,问一下斗笠盏如何使用现在是不是很少有人使用它,它的意义。苏东坡的名句"从来佳茗似佳人",典型地代表了唐宋及以后的文人墨客,
2021-09-15 阅读(7582)
本文主要为您介绍thinkpad小红点怎么用,内容包括怎么学习使用thinkpad小红点,thinkpad小红点怎么用,求教:THINKPAD的小红点使用方法。Thinkpad 小红点最高效的使用方法为:左手拇指按左键,无操作时在左键待命2、右手拇指按右键,同时兼按空格键及