Java调用XML的方法:DocumentBuilderFactory

Java调用XML的方法:DocumentBuilderFactory
首先得到:得到 DOM 解析器的工厂实
例 DocumentBuilderFactory domfac=DocumentBuilderFactory.new Instance();
然后从 DOM 工厂获得 DOM 解析器
DocumentBuilder dombuilder=domfac.newDocumentBuilder();
3 )把要解析的 XML 文档转化为输入流,以便 DOM 解析器解析它
InputStream is= new FileInputStream("test1.xml");
( 4 )解析 XML 文档的输入流,得到一个 Document
Document doc=dombuilder.parse(is);
( 5 )得到 XML 文档的根节点
Element root=doc.getDocumentElement();
( 6 )得到节点的子节点
NodeList books=root.getChildNodes();
Java代码
1.package com.st.demo;
2.
3.import java.io.File;
4.import java.io.FileInputStream;
5.import java.io.InputStream;
6.
7.import javax.xml.parsers.DocumentBuilder;
8.import javax.xml.parsers.DocumentBuilderFactory;
9.
10.import org.w3c.dom.Document;
11.import org.w3c.dom.Element;
12.import org.w3c.dom.Node;
13.import org.w3c.dom.NodeList;
14.
15.public class XmlReader {
16. public static void main(String[] args) {
17. XmlReader reader = new XmlReader();
18. }
19. public XmlReader(){
20. DocumentBuilderFactory domfac = DocumentBuil
derFactory.newInstance();
21. try{
22. DocumentBuilder domBuilder = domfac.
newDocumentBuilder();
23. InputStream is = new FileInputStrea
m(new File("D:/test1.xml"));
24. Document doc = domBuilder.parse(is);
25. Element root = doc.getDocumentElemen
t();
26. NodeList books = root.getChildNodes(
);
27. if(books!=null){
28. for(int i = 0; i < book
s.getLength(); i++) {
29. Node book = books.it
em(i);
30. if(book.getNodeType()
==Node.ELEMENT_NODE) {
31. //(7)
取得节点的属性值
32. String
email=book.getAttributes().getNamedItem("email").getNodeValue ();
33. System.
out.println(email);
34. //注意,
节点的属性也是它的子节点。

它的节点类型也是
Node.ELEMENT_NODE
35. //(8)
轮循子节点
36. for(Nod
e node=book.getFirstChild();node!=null;node=node.getNextSiblin
g()) {
37.
if(node.getNodeType()==Node.ELEMENT_NODE) {
38.
if(node.getNodeName().equals("name")) {
39.
String name=node.getNodeValue();
40.
String name1=node.getFirstChild().getNodeVal ue();
41.
System.out.println(name);
42.
System.out.println(name1);
43.
}
44.
if(node.getNodeName().equals("price")) {
45.
String price=node.getFirstChild().getNodeVal ue();
46.
System.out.println(price);
47.
}
48.
}
49. }
50. }
51. }
52. }
53. } catch(Exception e) {
54. // TODO Auto-generated catch block
55. e.printStackTrace();
56. }
57.
58. }
59.}
Xml代码
1.<?xml version="1.0"encoding="GB2312"standalone="no"?>
2.<books>
3.<book email="zhoujunhui">
4.<name>rjzjh</name>
5.<price>jjjjjj</price>
6.</book>
7.</books>。

合集下载

java中格式化xml的方法

java中格式化xml的方法

java中格式化xml的方法
在Java中,我们可以使用许多库来格式化XML文档。

其中最常
用的是Java内置的DOM(Document Object Model)库和外部的JDOM (Java Document Object Model)库。

使用DOM库来格式化XML文档需要以下步骤:
1. 创建一个DocumentBuilderFactory对象。

2. 使用DocumentBuilderFactory对象创建一个DocumentBuilder对象。

3. 使用DocumentBuilder对象解析XML文件,生成一个Document 对象。

4. 使用TransformerFactory对象来创建一个Transformer对象。

5. 使用Transformer对象将Document对象转换为XML字符串。

6. 格式化XML字符串。

使用JDOM库来格式化XML文档需要以下步骤:
1. 创建一个SAXBuilder对象。

2. 使用SAXBuilder对象解析XML文件,生成一个Document对象。

3. 使用XMLOutputter对象将Document对象输出为XML字符串。

4. 格式化XML字符串。

除了以上两种方法外,还有许多其他的库可以用来格式化XML文档,如SAX(Simple API for XML)、StAX(Streaming API for XML)等。

总之,无论使用哪种库,格式化XML文档的目的都是为了提高可读性和易用性。

Java操作XML工具类XmlUtil详解

Java操作XML工具类XmlUtil详解

Java操作XML⼯具类XmlUtil详解本⽂实例为⼤家分享了Java操作XML⼯具类的具体代码,供⼤家参考,具体内容如下⼀、代码public class XmlUtil {/*** 将XML⽂件输出到指定的路径** @param doc* @param fileName* @throws Exception*/public static void outputXml(Document doc, String fileName)throws Exception {TransformerFactory tf = TransformerFactory.newInstance();Transformer transformer = tf.newTransformer();DOMSource source = new DOMSource(doc);transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");transformer.setOutputProperty(OutputKeys.INDENT, "yes");PrintWriter pw = new PrintWriter(new FileOutputStream(fileName));StreamResult result = new StreamResult(pw);transformer.transform(source, result);System.out.println("⽣成XML⽂件成功!");}/*** ⽣成XML** @param ip* @return*/public static Document generateXml(String ip) {Document doc = null;Element root = null;try {DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = factory.newDocumentBuilder();doc = builder.newDocument();root = doc.createElement("errorDevices");doc.appendChild(root);} catch (Exception e) {e.printStackTrace();return null;// 如果出现异常,则不再往下执⾏}Element element;element = doc.createElement("errorDevice");element.setAttribute("ip", ip);element.setAttribute("date",StringUtil.formatDate(new Date(), "yyyy-MM-dd hh:mm:ss"));element.setAttribute("status", "1");root.appendChild(element);return doc;}/*** 新增Xml节点** @param ip* @param fileName* @return* @throws FileNotFoundException* @throws TransformerException*/public static void toWrite(String filename, String ip)throws FileNotFoundException, TransformerException {String date = StringUtil.formatDate(new Date(), "yyyy-MM-dd hh:mm:ss");DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = null;Document doc = null;try {builder = factory.newDocumentBuilder();doc = builder.parse(new File(filename));} catch (ParserConfigurationException e) {e.printStackTrace();} catch (SAXException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}NodeList links = doc.getElementsByTagName("errorDevice");if (links.getLength() > 0) {for (int i = 0; i < links.getLength(); i++) {Node nd = links.item(i);Node catParent = nd.getParentNode();Element ele = (Element) nd;String url = ele.getAttribute("ip");if (url.equals(ip)) {// ele.setAttribute("date", date);catParent.removeChild(nd);}}}Element element = doc.createElement("errorDevice");element.setAttribute("ip", ip);element.setAttribute("date",StringUtil.formatDate(new Date(), "yyyy-MM-dd hh:mm:ss"));element.setAttribute("status", "1");doc.getDocumentElement().appendChild(element);TransformerFactory tf = TransformerFactory.newInstance();Transformer transformer = tf.newTransformer();DOMSource source = new DOMSource(doc);transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");transformer.setOutputProperty(OutputKeys.INDENT, "yes");PrintWriter pw = new PrintWriter(new FileOutputStream(filename));StreamResult result = new StreamResult(pw);transformer.transform(source, result);System.out.println("新增XML节点成功!");}/*** 读取XML** @param filename* @return*/public static List<Map> readXml(String filename){DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = null;Document doc = null;try {builder = factory.newDocumentBuilder();doc = builder.parse(new File(filename));} catch (ParserConfigurationException e) {e.printStackTrace();} catch (SAXException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}NodeList links = doc.getElementsByTagName("errorDevice");List<Map> list = new ArrayList<Map>();for(int i = 0; i< links.getLength() ; i ++){Element node = (Element)links.item(i);Map map = new HashMap();map.put(node.getAttribute("ip"), node.getAttribute("date"));list.add(map);}return list;}}⼆、演⽰XML<?xml version="1.0" encoding="UTF-8" standalone="no"?><errorDevices><errorDevice date="2017-03-13 12:54:16" ip="20.100.156.42" status="1"/><errorDevice date="2017-03-13 12:54:56" ip="20.100.156.41" status="1"/></errorDevices>三、最终效果图以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

java使用document解析xml文件

java使用document解析xml文件

java使⽤document解析xml⽂件准备⼯作:1创建java⼯程2创建xml⽂档。

完成后看下⾯代码:import org.w3c.dom.*;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;public class Main {public static void main(String[] args) throws Exception {//创建⼀个⽂档解析器⼯⼚DocumentBuilderFactory fac= DocumentBuilderFactory.newInstance();//⽤上⾯的⼯⼚创建⼀个⽂档解析器DocumentBuilder builder=fac.newDocumentBuilder();//⽤上⾯的⽂档解析器解析⼀个⽂件放到document对象⾥Document doc=builder.parse("src/server.xml");//获取⽂档中节点名称为Listener的所有节点,并返回⼀个节点集合NodeList listenerList=doc.getElementsByTagName("Listener");System.out.println("⼀共有"+listenerList.getLength()+"个节点");//遍历整个集合(把所有标签名为Listener的节点⼀个⼀个拿出来for (int i=0;i<listenerList.getLength();i++){System.out.println("===========这是第"+(i+1)+"个listener节点的开始:===========");//把集合⾥的每⼀个listener节点分别拿出来Node node=listenerList.item(i);//再把上⼀个节点中的所有属性拿出来NamedNodeMap nodeMap= node.getAttributes();System.out.println("第"+(i+1)+"个节点⼀共有"+nodeMap.getLength()+"个属性");//遍历所有属性for(int j=0;j<nodeMap.getLength();j++){Node node1=nodeMap.item(j);System.out.println("第"+(j+1)+"个属性的名称是"+node1.getNodeName());System.out.println("第"+(j+1)+"个属性的值是"+node1.getNodeValue());}//获取节点的所有⼦节点,注意会把所有换⾏符也解析为⼦节点NodeList childNode=node.getChildNodes();//遍历所有⼦节点for(int k=0;k<childNode.getLength();k++){if(childNode.item(k).getNodeType()==Node.ELEMENT_NODE){//这个过滤条件是只将标签节点保留(换⾏符的节点就删去)}System.out.println("===========这是第"+(i+1)+"个节点的结束:===========");}}}为了⽅便记忆,在这⾥拆解⼀下。

JAVA写xml文件

JAVA写xml文件

JAVA写xml文件随着计算机技术的飞速发展,需要在程序中存储和管理大量的信息,并用众多的语言和工具进行交互。

为了解决这个问题,以及为不同的程序语言提供一致的格式来实现数据交换,XML(超文本标记语言)应运而生,并在软件开发中得到广泛运用。

XML用来描述数据的一种文本语言,它可以存储比如用户及其信息,设置,排列,及其他数据的内容。

XML在许多计算机程序中被广泛使用,它可以被用来传递数据,或者以XML标记格式存储信息。

尽管XML可以使用任何编程语言来解析,但是其最常见的用法是使用Java来写。

接下来我们就使用Java来写XML文件,具体步骤如下:第一步:准备好XML文件所需要的相关信息。

第二步:导入Java标准包(javax.xml.parsers.*)。

第三步:实例化DocumentBuilderFactory。

DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();第四步:使用builderFactory来实例化DocumentBuilder。

DocumentBuilder builder =builderFactory.newDocumentBuilder();第五步:使用DocumentBuilder来创建文档并且添加元素。

Document document = builder.newDocument();Element rootElement = document.createElement(rootdocument.appendChild(rootElement);第六步:添加属性并写入XML文件。

Element nameElement = document.createElement(amenameElement.setTextContent(EarthrootElement.appendChild(nameElement);Element sizeElement = document.createElement(sizesizeElement.setTextContent(largerootElement.appendChild(sizeElement);TransformerFactory transformerFactory = TransformerFactory.newInstance();Transformer transformer =transformerFactory.newTransformer();DOMSource source = new DOMSource(document);StreamResult result = new StreamResult(newFile(file.xml);transformer.transform(source, result);以上是Java写入XML文件的实例,从上面可以看出JAVA语言是一种非常强大的程序语言,它结合XML技术,可以用来实现大量复杂的数据存储和交互。

java selectsinglenode 用法

java selectsinglenode 用法

java selectsinglenode 用法Java中的SelectSingleNode是用于选择XML文档中单个节点的常用方法。

它允许您根据指定的XPath表达式从XML文档中选择单个节点,并执行与该节点相关的操作。

下面是一个简单的示例,演示如何使用SelectSingleNode方法。

一、导入必要的库在使用SelectSingleNode方法之前,需要导入以下库:```javaimport javax.xml.XMLConstants;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.transform.dom.DOMSource;import javax.xml.xpath.XPath;import javax.xml.xpath.XPathConstants;import javax.xml.xpath.XPathExpression;import javax.xml.xpath.XPathFactory;```二、创建XML文档对象创建一个XML文档对象,用于存储要操作的XML数据。

可以使用DocumentBuilderFactory类创建一个新的DocumentBuilder对象,并使用它来构建XML文档对象。

```javaDocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();Document document = documentBuilder.newDocument();```三、创建XPath对象创建一个XPath对象,用于根据XPath表达式选择XML文档中的节点。

处理XML解析中的错误

处理XML解析中的错误

这样的错误处理方式绝对不能接受!使用这样的代码将会惹恼用户、激怒老板,如果CEO 收到大客户谴责的邮件,可能会惹火身边那些不得不加班查找问题的人。

首先,实际上您已经编写了错误处理代码。

不精确地讲,包含System.err.println()语句的catch块可以被认为是错误处理,这是一个非常拙劣的方法。

错误处理代码不仅仅是一个错误报告—高质量的错误处理应该是:∙用户友好性。

∙无中断(除非必须如此)。

∙具有告知性。

错误处理是用户友好的最重要的是,错误处理代码针对的是应用程序的用户。

实际上,程序最终都是为用户服务的。

甚至您自己的调试语句都可以帮助您了解发生的问题,这样就可以修复功能。

功能是为用户服务的。

错误处理代码同样也是。

当然,“用户” 这个词可以具有多种不同的含义,尤其是如果不编写面向用户的代码的话。

如果您的应用系统是在公司和银行之间传输财务数据的后端系统,那么,您的用户可能是一些公司的内部部门或银行。

如果代码仅仅是供另外一个部门使用的基础代码,那么,这个部门就是您的用户。

所以,首先要确定的是,谁是您的用户?一旦确定您的客户是新泽西州的电脑用户,还是三楼的Web 开发人员,或是纽约证券交易所的主席,就可以编写对那些用户(或用户类)友好的代码。

对于消费者,需要提供不涉及编程术语的、易读的错误消息;对于网站开发人员,需要提供本部门或系统管理小组的联系方式;对于银行的CEO,错误处理最好不要中断他们的工作。

实际上,在过多考虑错误消息之前,最好认识到并不是所有的错误处理代码都必须报告错误。

错误处理是不中断的(除非必须如此)如果在您开车上班的路上,遇到一个大型的施工项目阻塞了交通,您不用把车靠到路边,熄火,在心里思考如何修饰自己的简历,因为您担心这次迟到而被解雇。

这是很愚蠢的。

您可以找到下一个出口并确定备用路线。

这也许会花去一些额外的时间,甚至要打电话告知某人您将不能按时参加早上8 点的会议。

但是尽管受到施工问题的影响,您仍然找到了解决方法。

DocumentBuilderFactory

setNamespaceAware(boolean&nbsp;awareness)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指定由此代码生成的解析器将提供对 XML 名称空间的支持。
&nbsp;void
setSchema(Schema&nbsp;schema)
&nbsp;void
setExpandEntityReferences(boolean&nbsp;expandEntityRef)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指定由此代码产生的解析器将扩展实体引用节点。
abstract &nbsp;void
JAXP 实现只读取一次 jaxp.properties 文件,然后缓存其值供以后使用。如果首次尝试读取文件时,文件不存在,则不会再次尝试检查该文件是否存在。首次读取 jaxp.properties 后,其中的属性值不能再更改。
如果可以,使用 Services API(在 JAR 规范中进行了详细描述)来确定类名称。Services API 将查找在运行时可用的 jar 中 META-INF/services/javax.xml.parsers.DocumentBuilderFactory 文件中的类名。
软件包&nbsp;
&nbsp;类&nbsp;
使用&nbsp;

xml文件解析方法

xml文件解析方法XML文件解析方法引言:XML(可扩展标记语言)是一种用于存储和传输数据的标记语言,它具有良好的可读性和灵活性,被广泛应用于数据交换和配置文件等领域。

在处理XML文件时,解析是必不可少的环节。

本文将介绍几种常用的XML文件解析方法,包括DOM、SAX和StAX。

一、DOM解析方法DOM(文档对象模型)是一种将整个XML文件以树形结构加载到内存中的解析方法。

DOM解析器将XML文件解析为一个树状结构,通过遍历节点来获取和操作XML文件中的数据。

DOM解析方法的优点是易于理解和使用,可以随机访问XML文件中的任意节点,但缺点是占用内存较大,不适用于大型XML文件的解析。

1. 创建DOM解析器对象:使用标准的Java API,可以通过DocumentBuilderFactory类来创建DOM解析器对象。

2. 加载XML文件:通过DOM解析器对象的parse()方法加载XML文件,将其转化为一个树形结构。

3. 遍历节点:使用DOM解析器对象提供的方法,如getElementsByTagName()、getChildNodes()等,可以遍历XML文件中的各个节点,获取节点的名称、属性和文本内容等信息。

4. 获取节点数据:通过节点对象提供的方法,如getNodeName()、getTextContent()等,可以获取节点的名称和文本内容。

二、SAX解析方法SAX(简单API for XML)是一种基于事件驱动的XML解析方法。

在SAX解析过程中,解析器顺序读取XML文件,当遇到节点开始、节点结束或节点文本等事件时,会触发相应的回调方法。

相比于DOM 解析方法,SAX解析方法具有内存占用小、解析速度快的优点,但缺点是无法随机访问XML文件中的节点。

1. 创建SAX解析器对象:使用标准的Java API,可以通过SAXParserFactory类来创建SAX解析器对象。

2. 实现事件处理器:自定义一个事件处理器,实现SAX解析器提供的DefaultHandler类,并重写相应的回调方法,如startElement()、endElement()和characters()等。

XML试题二(精品)

1 NET平台上主要使用SystemXml名称空间中的()类采用流模式对XML数据使用流模式进行读操作。

A XmlTextReaderB XmlNodeReaderC XmlV alidatingReader2 很多用来表示DOM中的节点类是从()类继承而来的。

A XmlDocumentB XmlEntityC XmlAttributeD XmlNode3 如果要创建新的文本节点,可以使用XmlDocument对象中的()方法。

A CreataTextNodeB InnerTextC XmlElement4 ReadXmlSchema方法的作用是()。

A将XML模式读入DataSet B 将数据集的结构定义写入文件或流5 DataSet对象GetXmlSchema方法的作用是()。

A以字符串的形式返回DataSet的XML表示形式的XSDB 以字符串的形式返回XML形式的数据1java使用DOM解析XML时()作为解析类器。

A DocumentBuilderFactoryB DocumentBuilderC Document2java使用DOM解析XML时()类可以用来获取某个节点下的所有子节点。

A NodeListB NodeC ElementD Document3在DOM解析方式的节点类Node中得()方法用来获取节点的值。

A getNodeV alue()B gatNodeType()C getNodeName()4java使用SAX解析XML时,发现XML文件中的一个元素的起始标签时将触发()。

A endDocument事件B startElement事件C characters事件D endElement事件5JDOM中的文档输出类是()。

A SAXBuilderB DOMBuilderC DocumentD XMLOutPutter1 目前主要应用的XML解析器有哪些?(多选)。

()。

读取xml的五种方法

123 * @param qName 原始名,如LIT:student
124 * @throws SAXException */
125 public void endElement(String namespaceURI, String localName,String qName) throws SAXException{
28 System.exit(1);
29 }
30 //获得根节点StuInfo
31 Element elmtStuInfo = doc.getDocumentElement();
32 //得到所有student节点
33 NodeList nlStudent = elmtStuInfo.getElementsByTagNameNS(
23 } catch (DOMException dom) {
24Message());
25 System.exit(1);
26 } catch (IOException ioe) {
27 System.err.println(ioe);
在java环境下读取xml文件的方法主要有5种:DOM、SAX、JDOM、JAXB、dom4j
最常用、最好用的dom4j
1. DOM(Document Object Model)
此 方法主要由W3C提供,它将xml文件全部读入内存中,然后将各个元素组成一棵数据树,以便快速的访问各个节点 。 因此非常消耗系统性能 ,对比较大的文档不适宜采用DOM方法来解析。 DOM API 直接沿袭了 XML 规范。每个结点都可以扩展的基于 Node 的接口,就多态性的观点来讲,它是优秀的,但是在 Java 语言中的应用不方便,并且可读性不强。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档