xml配置文件中if|java 读取和修改本地xml配置文件

① logback.xml可以写if吗

那如何在没有配置 catalina.home 系统属性或环境变量时设置一个默认值呢,例如,没有 catalina.home 时取值为 ".",这时值日志文件的路径就是./logs/unmi-%d{yyyy-MM-dd}.log了,也就是生成中当前目录下的 logs 子目录中,这样算是很友好的方式。下面就来分析怎么一步步找到答案的,没耐心或是只求结果的话,直接滚屏到下面就行。我们的问题是,对于下面那样的 logback.xml 配置:

② java 读取和修改本地xml配置文件

你看一下这个吧.不需要导入特别的包,直接用API中的DOM方式解析,并保存的.——————————————————————————————————-import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;import java.io.File;import java.util.HashMap;import java.util.Map;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JTextField;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerFactory;import javax.xml.transform.dom.DOMSource;import javax.xml.transform.stream.StreamResult;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import org.w3c.dom.Text;public class XmlApp extends JFrame implements ActionListener, ItemListener { private JTextField textField; private JComboBox comboBox; private Map<String, String> content = null; private Document doc; private String file = "H:\\content.xml"; public XmlApp() { getContentPane().setLayout(null); comboBox = new JComboBox(); comboBox.setBounds(110, 10, 112, 21); comboBox.addItemListener(this); getContentPane().add(comboBox); textField = new JTextField(); textField.setBounds(110, 41, 112, 21); getContentPane().add(textField); textField.setColumns(10); JButton btnSave = new JButton("Save"); btnSave.setBounds(252, 40, 93, 23); btnSave.addActionListener(this); getContentPane().add(btnSave); JLabel lblNode = new JLabel("Node"); lblNode.setBounds(10, 13, 90, 15); getContentPane().add(lblNode); JLabel lblValue = new JLabel("value"); lblValue.setBounds(10, 44, 90, 15); getContentPane().add(lblValue); init(); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setResizable(false); setSize(400, 120); setLocationRelativeTo(null); setVisible(true); } public void init() { content = new HashMap<String, String>(); DocumentBuilderFactory factory; try { factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); doc = builder.parse(file); loopNodes(doc.getFirstChild(), "", false); textField.setText(content.get(comboBox.getSelectedItem())); } catch (Exception e) { System.out.println("e = " + e.getMessage()); } } public void loopNodes(Node node, String name, boolean isSave) { NodeList list = node.getChildNodes(); for (int i = 0; i < list.getLength(); i++) { Node tmp = list.item(i); if (tmp instanceof Element) { if (tmp.hasChildNodes()) { loopNodes(tmp, tmp.getNodeName(), isSave); } } if (tmp instanceof Text) { String value = tmp.getNodeValue(); if (value != null && !"".equals(value.trim())) { if (isSave) { tmp.setNodeValue(content.get(name)); } else { comboBox.addItem(name); content.put(name, value.trim()); } } } } } public static void main(String[] args) { new XmlApp(); } public void actionPerformed(ActionEvent e) { String value = textField.getText(); content.put((String) comboBox.getSelectedItem(), value); loopNodes(doc, "", true); try { TransformerFactory tFactory = TransformerFactory.newInstance(); Transformer transformer = tFactory.newTransformer(); DOMSource source = new DOMSource(doc); StreamResult result = new StreamResult(new File(file)); transformer.transform(source, result); } catch (Exception ex) { System.out.println(ex.getMessage()); } } public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) { textField.setText(content.get(e.getItem())); } }}

③ 在xml中怎样进行if

struts里好像见过那你还不如在程序里设置呢if(){textView.setText(一种内容)}else{textView.setText(另一种内容)}

④ Java读取xml配置文件:

import java.io.File;import java.net.MalformedURLException;import java.util.List;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.SAXReader;/*test.xml内容<company-config><company id="1" name="hideCompanyMobile">13823095539,111,222</company></company-config>*/public class Demo_01 { public static void main(String[] args) { File inputXml = null; SAXReader saxReader = null; Document document = null; List list = null; try { inputXml = new File("D:/test.xml"); saxReader = new SAXReader(); document = saxReader.read(inputXml); list = document.selectNodes("//company-config/company[@id='1']"); if(list.size()>0){ Element element = (Element)list.get(0); String[] strArray = element.getText().split(","); System.out.println(strArray[0]); System.out.println(strArray[1]); System.out.println(strArray[2]); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (DocumentException e) { e.printStackTrace(); } finally { list = null; document = null; saxReader = null; inputXml = null; } }}

⑤ mybatis xml配置中的choose 和 if的区别

在项目中xml文件经常会遇到在判断等于某个值时加什么条件不等于某个值的时候加什么条件,比如下面这个例子: <if test=" name != null"> AND T.NAME = #{NAME,jdbcType=VARCHAR} </if> <if test=" name = null"> ORDER BY NAME,ID </if> 上面这个例子是一个错误的写法不可以这样用。 正确的需要引入<choose>标签 <choose><when test=" name != null"> AND T.NAME = #{NAME,jdbcType=VARCHAR}</when><otherwise>ORDER BY T.PRODUCT_TYPE_CODE, T.SORT DESC, T.CREATE_TIME</otherwise></choose>

⑥ 通过java怎么配置xml文件

JAVA与XML文件,可以说是软件开发的“黄金搭档”,而如何使用JAVA完成对XML文件的读取,是我们首先要解决的问题。一、XML文件这个示例文件包括了用来打开ORACLE数据库的各种参数<?xml version="1.0" encoding="UTF-8"?><dbmsg><dbinfo><drivername>oracle.jdbc.driver.OracleDriver</drivername><sConnStr>jdbc:oracle:thin:@11.88.225.80:1521:VOUCHERDB</sConnStr><username>SYS AS SYSDBA</username><password>voucherdb</password></dbinfo></dbmsg>二、编写类名为ReadXml的类,用于解析XML文件我们要在应用程序中打开数据库,就必须完成对该文件中drivername、sConnStr、username、password的读取,通过查找有关资料,笔者编制了以下程序,用于读取文件名为filename的XML文件。package voucher.basic;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import org.xml.sax.SAXException;public class ReadXml {private String drivername;private String sConnStr;private String username;private String password;public String getDrivername() {return drivername;}public String getSConnStr() {return sConnStr;}public String getUsername() {return username;}public String getPassword() {return password;}public void setDrivername(String drivername) {this.drivername = drivername;}public void setSConnStr(String connStr) {sConnStr = connStr;}public void setUsername(String username) {this.username = username;}public void setPassword(String password) {this.password = password;}public ReadXml(String fileName){DocumentBuilderFactory domfac=DocumentBuilderFactory.newInstance();try {DocumentBuilder dombuilder=domfac.newDocumentBuilder();InputStream is=new FileInputStream(fileName);Document doc=dombuilder.parse(is);Element root=doc.getDocumentElement();NodeList dbinfo=root.getChildNodes();if(dbinfo!=null){for(int i=0;i<dbinfo.getLength();i++){Node db=dbinfo.item(i);for(Node node=db.getFirstChild();node!=null;node=node.getNextSibling()){if(node.getNodeType()==Node.ELEMENT_NODE){if(node.getNodeName().equals("drivername")){setDrivername(node.getFirstChild().getNodeValue());}if(node.getNodeName().equals("sConnStr")){setSConnStr(node.getFirstChild().getNodeValue());}if(node.getNodeName().equals("username")){setUsername(node.getFirstChild().getNodeValue());}if(node.getNodeName().equals("password")){setPassword(node.getFirstChild().getNodeValue());}}} } }} catch (ParserConfigurationException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SAXException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} } }这个以ReadXml命名的类,使用了参数为文件名的构造方法,用户只要将配置文件我名称传递给该方法,就可以完成对XML文件的解析,进而完成对相应参数数的读取。三、如何获取XML文件全路径并读取配置参数获取XML文件全路径的方法有两个,一是在servlet中获取,二是在单独的JAVA类中获取。1.在servlet中获取XML文件的全路径并读取配置参数程序片段String dirPath = getServletContext().getRealPath( "/WEB-INF");String fileName = dirPath + "/conn.xml";ReadXml xm = new ReadXml(fileName);String DriverName = xm.getDrivername();String connStr = xm.getSConnStr();String user = xm.getUsername();String pas = xm.getPassword();将这段程序添加到servlet中dopost()之后即可完成参数的读取2.在单独的JAVA类中获取全路径并读取配置参数程序片段String dirpath = System.getProperty("user.dir");String xmlFile = dirpath + "/WebRoot/WEB-INF/conn.xml";ReadXml rdxml = new ReadXml(xmlFile);String driverName = rdxml.getDrivername();String sConnStr = rdxml.getSConnStr();String userName = rdxml.getUsername();String passWord = rdxml.getPassword();注:配置文件conn.xml保存在webroot/WEB-INF目录中。


赞 (0)