`
yuanfen860913
  • 浏览: 119777 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

java读取Xml,写入Xml的简单Dom操作,忽略DTD验证

阅读更多

package com.yd.common;

import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.StringWriter;

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;
import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

import com.sun.org.apache.xml.internal.serialize.OutputFormat;
import com.sun.org.apache.xml.internal.serialize.XMLSerializer;

public class UpdateXml {

private void doc2XmlFile(Document document, String filePath) {
try {
OutputFormat format = new OutputFormat(document);//Serialize DOM
format.setEncoding("UTF-8");
StringWriter stringOut = new StringWriter();//Writer will be a String
XMLSerializer serial = new XMLSerializer(stringOut, format);
serial.asDOMSerializer();// As a DOM Serializer
serial.serialize(document.getDocumentElement());
String STRXML = stringOut.toString(); //Spit out DOM as a String
File f = new File(filePath);
PrintWriter out = new PrintWriter(new FileWriter(f));
out.print(STRXML + "\n");
out.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}

private Document load(String filename) {
Document document = null;
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setValidating(false);
DocumentBuilder builder = factory.newDocumentBuilder();
builder.setEntityResolver(this.new IgnoreDTDEntityResolver());
document = builder.parse(new File(filename));
document.normalize();
} catch (Exception ex) {
ex.printStackTrace();
}
return document;
}

/**
* 演示修改文件的具体某个节点的值
*/
public void xmlUpdateDemo(String filePath, String customerName, String DMSID) {
Document document = load(filePath);
Element root = document.getDocumentElement();
/** 如果root有子元素 */
if (root.hasChildNodes()) {
/** ftpnodes */
NodeList ftpnodes = root.getChildNodes();

/** 循环取得ftp所有节点 */
for (int i = 0; i < ftpnodes.getLength(); i++) {
Node subnode = ftpnodes.item(i);

if (subnode.getNodeType() == Node.ELEMENT_NODE && subnode.getNodeName() == "Details") {
subnode.getAttributes().getNamedItem("DMSID").setNodeValue(DMSID);
}
if (subnode.getNodeType() == Node.ELEMENT_NODE && subnode.getNodeName() == "CustomerDetails") {
subnode.getAttributes().getNamedItem("CustomerName").setNodeValue(customerName);
}
}
}
doc2XmlFile(document, filePath);
}
/**
* 忽略DTD验证文件子类
*/
class IgnoreDTDEntityResolver implements EntityResolver{
public InputSource resolveEntity(java.lang.String publicId, java.lang.String systemId) throws SAXException,
java.io.IOException{
if (systemId.contains("NOCServerDetails.dtd")){
InputSource is = new InputSource(new ByteArrayInputStream("<?xml version=\"1.0\" encoding=\"UTF-8\"?>".getBytes()));
return is;
}
else
return null;
}
}

public static void main(String args[]) throws Exception {
new UpdateXml().xmlUpdateDemo("C:\\testop_Key\\NOCServerDetails.xml","3333","3333");

}
}

分享到:
评论

相关推荐

    java中dom4j读写XML

    DOM4J不仅提供了基本的XML操作,还支持命名空间、事件处理、DTD和XML Schema验证等功能,是Java开发中处理XML的强大工具。学习和掌握DOM4J,能够极大地提高开发效率,特别是在需要频繁处理XML数据的场景下。

    java读取跟输出xml文件

    2. 读取XML文档:利用`SAXBuilder`,可以从文件或输入流中读取XML文档并将其转换为`Document`对象。这允许你遍历文档的节点,提取数据或进行其他操作。 接下来,XStream是另一个强大的工具,它允许将Java对象直接...

    java 操作xml文件(包含xml文件和对应jar包)

    在实际应用中,我们可能需要读取XML文件中的数据,例如,使用DOM API的`DocumentBuilderFactory`和`DocumentBuilder`来创建`Document`对象,然后通过`getElementsByTagName`、`getElementsByTagnameNS`等方法查找...

    dom4j.jar,java xml

    它是一个灵活且高性能的XML解析器,同时提供了丰富的API,使得在Java应用程序中读取、写入、修改和操作XML文件变得简单。DOM4J这个名字来源于Document Object Model (DOM) 和 Java 的结合,尽管它的功能超出了传统的...

    Java操作XML编程实例解析.doc

    写入XML文件时,可能需要`FileOutputStream`和DOM的方法来生成XML字符串并写入文件。 7. **异常处理**:在处理可能抛出异常的操作时,如文件I/O和XML解析,通常使用try-catch语句来捕获并处理异常。在上述代码中,`...

    JAVA操作XML学习资料合集

    "java操作xml基础+.txt"可能是对XML基础概念的介绍,如XML的结构、命名规则、DTD(文档类型定义)和Schema验证等。 "JDOM Lib"文件夹可能包含了JDom库的不同版本,这对于在不同项目中选择合适的JDom版本很重要。...

    读取PLC寄存器,读写XML文件

    2. **读取XML**:通过解析库,我们可以访问XML文件中的节点和属性,提取所需信息。例如,查询特定元素的值或获取整个文档的结构。 3. **写入XML**:创建新的XML文件或修改已有文件涉及添加、删除或更新元素、属性。...

    读取和修改xml文件

    在读取XML文件后,可以通过DOM提供的API进行修改,如`Element`的`setTextContent`、`setAttribute`等方法。修改完成后,需使用`Transformer`将`Document`对象转换回XML字符串,保存到文件。 8. **XPath和XSLT** ...

    利用Java技术进行XML编程3

    DOM4J和JDOM是两个流行的第三方库,它们提供了比Java内置DOM更简单易用的API。DOM4J提供了一种灵活的XPath支持,而JDOM则强调简洁和高性能。 7. **XML Schema(XSD)和DTD**: XML Schema和Document Type ...

    javaXML.rar_Javaxml开发

    Java XML API提供了各种类和接口,使得开发者能够方便地在Java程序中读取、写入、验证和操作XML文档。这个"javaXML.rar"压缩包显然包含了关于Java XML解析的源代码,非常适合初学者学习和理解XML处理的基本概念和...

    Xml解析.docx

    此外,DOM解析器支持DTD(Document Type Definition)和XML Schema进行验证,可以通过调用`setValidating()`和`setIgnoringElementContentWhitespace()`方法来开启或关闭验证和忽略元素内容中的空白。 2. SAX解析:...

    利用Java进行XML编程

    它允许开发者以迭代的方式读取或写入XML,比SAX更灵活,同时占用内存少于DOM。Java的`javax.xml.stream`包提供了StAX的相关API。 4. JAXB: JAXB是Java中用于XML和Java对象之间自动转换的框架,可以将XML数据绑定到...

    java写入和存储XML

    - 创建`XMLInputFactory`,然后生成`XMLStreamReader`,用于读取XML。 - 创建`XMLOutputFactory`,生成`XMLStreamWriter`,用于写入XML。 - 使用`XMLStreamReader`逐个处理XML事件,如`next()`方法移动到下一个...

    dom4j使用简介

    - XML 验证:验证 XML 是否符合指定的 DTD 或 Schema。 总结,DOM4J 是一个强大且灵活的 XML 处理工具,适用于各种需要处理 XML 的 Java 应用。通过其简洁的 API 和对 DOM、SAX、XPath 和 XSLT 的全面支持,DOM4J ...

    用DOM读写XML文件

    在本文中,我们将深入探讨如何使用DOM(Document Object Model)API来读取和写入XML文件。 DOM是一种标准,它提供了一种结构化的表示XML文档的方式,并允许程序和脚本通过API访问XML文档的各个部分。DOM将XML文档...

    Java-XML-programming-examples.rar_java programming

    它允许程序员通过迭代器按需读取或写入XML事件,既避免了DOM的内存消耗,又比SAX更易用。 5. **DOM4J和JDOM**:这两者是Java社区广泛使用的两个第三方XML库,提供了比JAXP更高级的API,使XML处理更加方便。DOM4J...

    简析JAVA的XML编程

    4. **StAX(Streaming API for XML)**:StAX是一种基于流的解析器,允许开发者按需读取或写入XML事件。Java中的`javax.xml.stream.XMLInputFactory`和`XMLStreamReader`用于实现XML的读取,`XMLOutputFactory`和`...

    java兼容linux版获取xml

    4. **I/O操作**:使用`java.io.File`类读取和写入XML文件时,要注意权限问题。Linux有严格的文件权限系统,确保Java程序有足够的权限访问所需的文件。 5. **字符编码**:XML文件通常使用UTF-8编码,Java在读取或...

    XML文件在Java程序中的基本运用.zip

    - **dom4j库**:作为Java的XML处理库,dom4j提供了一种简单易用的方式来解析和操作XML。它支持DOM、SAX和StAX解析器,并提供了一些高级功能,如XPath查询、XML文档构建和修改等。 2. **使用dom4j解析XML** - **...

    dom4j.jar,dom,xml,dom4j

    如果你正在处理XML文档,无论是进行简单的读取还是复杂的转换操作,DOM4J都是一个值得信赖的工具。在Java项目中,只需将dom4j-1.6.1.jar添加到类路径,就可以立即开始利用其强大的XML处理能力。 总之,DOM4J是Java...

Global site tag (gtag.js) - Google Analytics