java读取xml文件路径|java如何读取xml文件

java读取xml文件路径|java如何读取xml文件的第1张示图

① java读xml相对路径问题

如果你发布项目的话,绝对路径是不行的(那是你本地电脑上的路径)这时应该用类加载器来读取类的路径,你可以把xml文件放到src目录下,这个目录时存放源代码和字节码的class.getClassloader.get,,,,,,class表示当前类的class对象,getClassLoader获得类加载器后面的一个方法我记不太清了,是获取IO流的方法,你找找看这种方法即使你发布工程到tomcat上也没问题

② JAVA中怎么读取XML文件

参考:import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.DocumentBuilder;import org.w3c.dom.Document;import org.w3c.dom.NodeList;import org.w3c.dom.Node;import org.w3c.dom.Element;import java.io.File;public class ReadXMLFile { public static void main(String argv[]) { try {File fXmlFile = new File("/Users/mkyong/staff.xml");DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();Document doc = dBuilder.parse(fXmlFile);//optional, but recommended//read this – http://stackoverflow.com/questions/13786607/normalization-in-dom-parsing-with-java-how-does-it-workdoc.getDocumentElement().normalize();System.out.println("Root element :" + doc.getDocumentElement().getNodeName());NodeList nList = doc.getElementsByTagName("staff");System.out.println("—————————-");for (int temp = 0; temp < nList.getLength(); temp++) {Node nNode = nList.item(temp);System.out.println("\nCurrent Element :" + nNode.getNodeName());if (nNode.getNodeType() == Node.ELEMENT_NODE) {Element eElement = (Element) nNode;System.out.println("Staff id : " + eElement.getAttribute("id"));System.out.println("First Name : " + eElement.getElementsByTagName("firstname").item(0).getTextContent());System.out.println("Last Name : " + eElement.getElementsByTagName("lastname").item(0).getTextContent());System.out.println("Nick Name : " + eElement.getElementsByTagName("nickname").item(0).getTextContent());System.out.println("Salary : " + eElement.getElementsByTagName("salary").item(0).getTextContent());}} } catch (Exception e) {e.printStackTrace(); } }}

③ java 读取一个路径下的所有 xml类型的文件

publicstaticvoidmain(String[]args){Filefile=newFile("D:");for(Filef:file.listFiles()){String[]str=f.getName().split("\.");if(str[str.length-1].equals("xml")){System.out.println(f.getName());}}}

不知道这是不是楼主要的。

上面的只是一个简单的,需要完善(比如判断是不是文件等)

④ java 读取一个路径下的所有 xml类型的文件

得到所有的文件,然后再根据文件名来判断是不是以.xml结尾的,如果是就读取

⑤ 关于java xml读取时中文路径的问题

这是人家api规定的,你可以选择另一种方式啊,parse方法可以加很多参数的,它不接受中文,但是File可以啊,改成builder.parse(newFile("中文路径"))搞定。

⑥ java读取xml文件有关路径的问题。

位置放哪都可以,读取的时候定义好路径就可以

⑦ Java如何读取XML文件 具体实现

xml的解析 1.解析式为了得到里面的内容,进行增,删,改查的操作 XML的解析方式 SAX(Simple API for XML)xml文档的一种简单的解析方式 DOM(Document Object Model) DOM4J SAX:基于事件的解析方式 DOM: 基于对象的解析方式 事件监听三要素 1.事件源 2.监听器 3.事件SAX 基于事件的解析 优点: 简单 效率高 缺点:顺序执行,不能得到某个元素 不能逆向执行 不能进行增,与删的操作SAX解析方式工作原理: 通过时间源xml文档创建SAXParseFactory SAXParserFactory factory=SAXParserFactory.newInstance(); 得到一个解析器 SAXParser parse=factory.newSAXParser(); 对xml文件进行解析 得到解析的文件对象 File file=new File("employees.xml"); 通过监听器进行解析 MyListener listener=new MyListener(); parse.parse(file,listener); 对于监听器有5个方法:监听器所在的类实现的接口有: org.xml.sax.hepers.DefaultHandler org.xml.sax 通过查看API文档中的DefaultHandler类中的下面5个方法 startDocument() 对于文档开始的解析 public void startDocument()throws SAXException{ System.out.println("文档开始解析啦!!!!"); } startElement()元素开始的解析其中几个名词 url:命名空间的url localName:命名空间的前缀 qName:元素 attributes:元素里的属性 public void startElement(String url,String localName,String qName,Attributes attributes)throws SAXException{ StringBuffer sb=new StringBuffer(); sb.append("<"+qName); for(int i=0;i<attributes.getLength();i++){ String attName=attributes.getQName(i);获得元素属性名称其中的i为元素的第几个属性 String attValue=attributes.getValue(i);获得元素属性的值其中的i为元素的第几个属性的值 sb.append(attName+"="+attValue); } sb.append(">"); System.out.print(sb.toString()); } character()获得元素的内容体 public void characters(char[]ch,int start,int length)throws SAXException{ System.out.print(new String(ch,start,length)); } endElement()获得元素的结束事件 public void endElement(String url,String localName,String qName)throws SAXException{ System.out.print("</"+qName+">"); } endDocument()获得文档的结束事件 public void endDocument(){ System.out.println("文档解析结束啦!!!!"); } 对于SAX解析只能逐行解析不能越行解析DOM:基于对象的 优点:灵活,能进行增删的操作 缺点:读取速度慢,效率低 占用的内容多对于DOM解析:不需要添加监听器,按级解析从根元素、一级子元素、二级子元素…… 同SAX解析相同刚开始也是要得到一个解析器; DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance() ; 因为构造方法不可用不可以new对象只能用newInstance()方法得到解析器对象 DocumentBuilder builder=factory.newDocumentBuilder() ;得到一个解析器 对于document可以有两种方法得到: Document document= builder.parse(new File(文件路径));通过parse方法解析一个已有的xml文档 Document document=builder.newDocument();可以得到一个空的document对象 得到根节点 Element root=document.getDocumentElement(); 如果不存在根节点即为一个空document对象的时候只能添加跟节点 Element root=document.createElement(根节点的名字) 得到根节点下面的所有一级子元素 NodeList list=root.getElementsByTagName(根节点的名字可以用root.getTagName或者root.getNodeName()得到根节点的名字)(); { 对与document可以添加一级子元素 不管document是否为空都可以添加 Element firstElements =root.creatElement(一级子元素的名字); 当然也可以为一级子元素添加属性 一级子元素的名字.setAttribute("属性名","属性值"); } 通过遍历list集合 for(int i=0;i<list.getLength();i++){ Element first_elements=(Element)list.item(i); 可以得到一级资源的属性的值当知道属性的时候 String attribute=first_elements.getAttribute("属性的名字"); 得到一级子元素的名字 String first_elements_name=first_elements.getNodeName(); 得到一级子元素下面所有的元素如id 第一个id元素当然也可有很多个id 通过item()来确定要取那个id Element id_element=(Element)first_elements.getElementByName("id").item(0); 得到id的值 String id_value=id_element.getFirstChild().getTextContent(); 通过这个遍历集合可以拿到所有子元素 }DOM添加或删除元素: DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance() ; 因为构造方法不可用不可以new对象只能用newInstance()方法得到解析器对象 DocumentBuilder builder=factory.newDocumentBuilder() ;得到一个解析器 对于document可以有两种方法得到: Document document= builder.parse(new File(文件路径));通过parse方法解析一个已有的xml文档 Document document=builder.newDocument();可以得到一个空的document对象 得到根节点 Element root=document.getDocumentElement(); 如果不存在根节点即为一个空document对象的时候只能添加跟节点 Element root=document.createElement(根节点的名字) 对与document可以添加一级子元素 不管document是否为空都可以添加 Element firstElements =root.creatElement(一级子元素的名字); 当然也可以为一级子元素添加属性 一级子元素的名字.setAttribute("属性名","属性值"); 添加二级子元素 Element secondElements=firstElements.creatElement("二级子元素的名字"); 挂载组装 一级子元素firstElements.append(secondElements); 根节点root.appendChild(firstElements); 将document对象树写入磁盘 TransformerFactory tf=TransformerFactory.newInstance(); Transformer former=tf.newTransformer(); DOMSource source=new DOMSource(document); StreamResult result= new StreamResult(new File("10.xml"));结果集 former.transform(source,result); 完毕DOM4j需要借助外部jar包 需要借助外部jar包就必须设置环境变量中的classpath把classpath设置成 dom4j jar包存在的路径(绝对路径) 例如: set classpath=.;C:\Documents and Settings\Administrator\桌面\day3\dom4j.jarimport org.dom4j.io.*;import java.io.*;import java.util.*;import org.dom4j.*;public static void read_XML(String fileName){ try{ //得到一个解析器,相当于SAX,DOM里面的解析器工厂,与解析器 SAXReader reader=new SAXReader(); //得到一个对象树 Document document=reader.read(new File(fileName)); //得到一个根元素 Element root=document.getRootElement(); System.out.println(root.getName()); //得到所有的一级子元素 List firstElements=root.elements(); Iterator it=firstElements.iterator(); while(it.hasNext()){ //依次得到每一个一级子元素 Element firstElement=(Element)it.next(); System.out.println(firstElement.getName()); //得到所有的属性 List attributes=firstElement.attributes(); for(Object obj:attributes){ //依次得到每一个属性 Attribute att=(Attribute)obj; System.out.println(att.getName()+"="+att.getValue()); } //得到一级子元素下面的所有元素,及其附带值 List second_Elements=firstElement.elements(); Iterator second_Element=second_Elements.iterator(); while(second_Element.hasNext()){ Element sec_Element=(Element)second_Element.next(); System.out.println(sec_Element.getName()+":"+sec_Element.getText()); } System.out.println("———-"); } }catch(Exception e){ }}public static void write(String fileName){ try{ Document document = DocumentHelper.createDocument(); //创造一级子元素 Element books=document.addElement("books"); books.addComment("The book is J2EE"); Element book=books.addElement("book"); 创建元素的属性 book.addAttribute("show","yes"); book.addAttribute("page","100"); 创建二级子元素 Element book_name=book.addElement("bookName"); 创建元素的内容体 book_name.setText("xml"); Element book_price=book.addElement("bookPrice"); book_price.setText("3000"); Element book_press=book.addElement("bookPress"); book_press.setText("etoak"); Element book_author=book.addElement("bookAuthor"); book_author.setText("Robin"); //挂载另一个一级子元素 book=books.addElement("book"); book.addAttribute("show","NO"); book.addAttribute("page","200"); book_name=book.addElement("bookName"); book_name.setText("葵花宝典"); book_price=book.addElement("bookPrice"); book_price.setText("无价之宝"); book_press.addElement("bookPress"); book_press.setText("华山派"); book_author=book.addElement("bookAuthor"); book_author.setText("林平之"); //创建xml文件输出的路径 OutputFormat format=OutputFormat.createPrettyPrint(); format.setEncoding("gbk"); XMLWriter xw=new XMLWriter(new FileOutputStream(fileName), format); //XMLWriter xx= new XMLWriter(System.out,OutputFormat.createPrettyPrint()); xw.write(document); xw.flush(); xw.close(); }catch(Exception e){ 对于DOM4j添加子元素,是一级一级的添加的而在DOM中是先创造 子元素然后再挂载的DOM4j在创建子元素的时候就确定好了顺序 对于文件的输出各有千秋各有特色其中SAX是需要添加监听器的 }}public static void update(String fileName){ try{ SAXReader reader= new SAXReader(); Document document = reader.read(new File(fileName)); Element root = document.getRootElement(); System.out.println(root.getName()); 在根节点上添加一级子元素 Element student=root.addElement("student"); Element id=student.addElement("id"); id.setText("007"); OutputStream os= new FileOutputStream(fileName); OutputFormat format = OutputFormat.createPrettyPrint(); XMLWriter xw = new XMLWriter(os,format); xw.write(document); xw.flush(); xw.close(); }catch(Exception e){ 和创建一个新的document对象类似只不过这个的根节点已经存在 直接可以在根节点上添加一级子元素; }}

⑧ 1.1 JAVA怎么读取XML

XStream stream = new XStream();//<student> 根节点和类的对应关系,就是说看到student,就认为是Student这个类stream.alias("student", Student.class);//可以用xml文件 filePath是xml文件路径Student student = (Student) stream.fromXML(new FileInputStream(filePath));//可以用字符串(xml字符串)xml是字符串Student student = (Student) stream.fromXML(xml);这个样文件或字符串就变成对象了,对象里面定义的属性和文件里面的一直就会自动复制需要两个jar包:xpp3_min-1.1.3.4.O.jar和xstream-1.3.1.jar

⑨ JAVA 读取XML文件

import java.util.List;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.SAXReader;public class XmlTester {public static void main(String[] args) throws DocumentException {// 使用了dom4j解析xml// 读取目录下用来测试的test.xml文件,取得xml主内容Document document = new SAXReader().read(“src/abc/test.xml”).getDocument();int i = 1;// 遍历文档根节点(wuxialist)下的子节点列表,即txtbook节点的集合for(Element txtbook : (List<Element>)document.getRootElement().elements()){//取得txtbook节点下的name节点的内容System.out.println(i+”.”+txtbook.element(“name”).getText());i++; //原来这里少些了这一行,先补上}}}

⑩ java如何读取xml文件

// 读取输入流 SAXReader reader = new SAXReader(); Document document = reader.read(inputStream); // 得到根元素 Element root = document.getRootElement(); // 得到根元素的所有子节点 List<Element> elementList = root.elements(); // 遍历所有子节点 for (Element e : elementList) map.put(e.getName(), e.getText()); // 释放资源 inputStream.close(); inputStream = null; 参考http://blog.csdn.net/lyq8479/article/details/8949088

未经允许不得转载:山九号 » java读取xml文件路径|java如何读取xml文件

赞 (0)