`
ld362093642
  • 浏览: 66630 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

java写xml 以及 向xml追加节点内容

阅读更多

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.dom4j.DocumentHelper;
import org.w3c.dom.Attr;
import org.w3c.dom.CDATASection;
import org.w3c.dom.Comment;
import org.w3c.dom.DOMConfiguration;
import org.w3c.dom.DOMException;
import org.w3c.dom.DOMImplementation;
import org.w3c.dom.Document;
import org.w3c.dom.DocumentFragment;
import org.w3c.dom.DocumentType;
import org.w3c.dom.Element;
import org.w3c.dom.EntityReference;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.ProcessingInstruction;
import org.w3c.dom.Text;
import org.w3c.dom.UserDataHandler;


// 将用户要增加的倾向性分析数据增加至XML文件
	private static void updateSentimentFile(String title, String text, String lable,long time) throws Exception {
		String filePath = util.Constants.SENTIMENT_FILE_PATH;//获取配置的倾向性目录
		// 上传后实际保存在服务器上的文件名: 
		String saveName = "sentiment_" + time + "_" + XString.random(8) + ".xml";//"_" + System.currentTimeMillis() + "_" + XString.random(8) + "_" + uploaded.getName();
		title = title.replaceAll("<", " ").replaceAll(">", " ");//过滤xml敏感符号  < 和 > 
		text = text.replaceAll("<", " ").replaceAll(">", " ");//过滤xml敏感符号  < 和 > 
		// 创建保存目录
		File toSave = new File(filePath + "a/");
		if (!toSave.exists()) {
			toSave.mkdirs();
		}
		// 保存文件
		toSave = new File(filePath + "a/" + saveName);
		File checkFile = new File(filePath + "b/check.txt");
		if(checkFile.exists()){//删除校验文件
			play.libs.Files.delete(checkFile);
		}
		createXML(title, text, lable, time, toSave);//写入添加的文件到A目录
		File bFile = new File(filePath + "b/");
		if (!bFile.exists()) {
			bFile.mkdirs();
		}
		bFile = new File(filePath + "b/sentiment.xml");
		if (!bFile.exists()) {
			play.libs.Files.copy(toSave, bFile);//B目录没有XML的情况下将A目录的XML写入B目录
		}else{
			writeXML(title, text, lable, time, bFile, toSave);//B目录存在XML的情况下 向B目录的XML增加写入传来的内容
		}
		
		checkFile.createNewFile();//重新创建校验文件
	}



//向xml追加节点内容
	private static void writeXML(String title, String text, String lable, long time, File bFile, File aFile) throws Exception{
		/*Document docs = null;
		try {
			docs = play.libs.XML.getDocument(bFile);
		} catch (Exception e) {
			play.libs.Files.delete(bFile);
			play.libs.Files.copy(aFile, bFile);
			return;
		}*/
		 // 1.得到DOM解析器的工厂实例
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        // 2.从DOM工厂里获取DOM解析器
        DocumentBuilder db = dbf.newDocumentBuilder();
        // 3.解析XML文档,得到DOM树
        Document docs = null;
		try {
			docs = db.parse(bFile);
		} catch (Exception e) {
			play.libs.Files.delete(bFile);
			play.libs.Files.copy(aFile, bFile);
			return;
		}
		//创建节点
		Element docElement = docs.createElement("doc");
		Element lableElement =  docs.createElement("lable");
		Text l = docs.createTextNode(lable);
		lableElement.appendChild(l);//lableElement.setNodeValue(lable);
		Element titleElement =  docs.createElement("title");
		Text t = docs.createTextNode(title);
		titleElement.appendChild(t);//titleElement.setNodeValue(title);
		Element textElement =  docs.createElement("text");
		Text x = docs.createTextNode(text);
		textElement.appendChild(x);//textElement.setNodeValue(text);
		Element timeElement =  docs.createElement("timemillis");
		Text m = docs.createTextNode(time + "");
		timeElement.appendChild(m);
		
		//添加父子关系
		docElement.appendChild(lableElement);
		docElement.appendChild(titleElement);
		docElement.appendChild(textElement);
		docElement.appendChild(timeElement);
		//Element docsElement=(Element)docs.getElementsByTagName("docs").item(0);
		//docsElement.appendChild(docElement);
		docs.getDocumentElement().appendChild(docElement);
		
		//保存xml文件
        TransformerFactory transformerFactory=TransformerFactory.newInstance();
        Transformer transformer=transformerFactory.newTransformer();
        DOMSource domSource=new DOMSource(docs);
        
        //设置编码类型
        transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
        StreamResult result=new StreamResult(new FileOutputStream(bFile));
        
        //把DOM树转换为xml文件
        transformer.transform(domSource, result);
	}
	
	//新建xml文件写入内容
	private static void createXML(String title, String text, String lable, long time, File bFile) throws Exception{
		 // 1.得到DOM解析器的工厂实例
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        // 2.从DOM工厂里获取DOM解析器
        DocumentBuilder db = dbf.newDocumentBuilder();
        // 3.创建document,即DOM树
        Document docs = db.newDocument();
		
		//创建根节点
        Element docsElement = docs.createElement("docs");
        docs.appendChild(docsElement);
        //创建子节点
		Element docElement = docs.createElement("doc");
		Element lableElement =  docs.createElement("lable");
		Text l = docs.createTextNode(lable);
		lableElement.appendChild(l);//lableElement.setNodeValue(lable);
		Element titleElement =  docs.createElement("title");
		Text t = docs.createTextNode(title);
		titleElement.appendChild(t);//titleElement.setNodeValue(title);
		Element textElement =  docs.createElement("text");
		Text x = docs.createTextNode(text);
		textElement.appendChild(x);//textElement.setNodeValue(text);
		Element timeElement =  docs.createElement("timemillis");
		Text m = docs.createTextNode(time + "");
		timeElement.appendChild(m);//timeElement.setNodeValue(time + "");
		
		//添加父子关系
		docElement.appendChild(lableElement);
		docElement.appendChild(titleElement);
		docElement.appendChild(textElement);
		docElement.appendChild(timeElement);
		docsElement.appendChild(docElement);
		
		//保存xml文件
        TransformerFactory transformerFactory=TransformerFactory.newInstance();
        Transformer transformer=transformerFactory.newTransformer();
        DOMSource domSource=new DOMSource(docs);
        
        //设置编码类型
        transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
        StreamResult result=new StreamResult(new FileOutputStream(bFile));
        
        //把DOM树转换为xml文件
        transformer.transform(domSource, result);
	}

分享到:
评论

相关推荐

    XML文件追加Node节点

    本篇将深入探讨如何在XML文件中追加Node节点,以及与之相关的C#编程技术。 首先,要追加Node节点,我们需要使用C#中的System.Xml命名空间,它提供了处理XML文档的各种类,如XmlDocument、XmlNode、XmlElement等。...

    xml文件的操作,包括xml文件读写,添加删除结点等

    本文将深入探讨XML文件的操作,包括XML文件的读写、添加和删除节点等关键知识点。 首先,XML文件的读写是操作的基础。在Python中,可以使用`ElementTree`库来处理XML。`ElementTree`提供了`parse()`函数来解析XML...

    c#读写XML文件方法

    `XmlWriter`用于创建新的XML或者向现有XML文件追加内容,而`XmlReader`用于逐个读取XML节点,不占用内存。 ```csharp using System.IO; using System.Xml; public class Program { public static void Main() { ...

    js中使用DOM复制(克隆)指定节点名数据到新的XML文件中的代码.docx

    在我们的示例代码中,我们使用 `DOMNode` 对象来克隆指定节点,并将其追加到新的 XML 文件中。 代码示例 以下是我们的示例代码: ```php if (!function_exists('cp_xml')) { function cp_xml($dom, $newdom, $...

    winform 使用XML读写类型源码

    `XmlReader`只读取XML的当前位置,不存储整个文档,而`XmlWriter`则用于创建或追加XML内容,两者都支持流式处理,减少内存占用。 6. **XML配置文件**:在WinForm应用中,经常使用XML文件作为配置文件,存储应用设置...

    JAVA利用DOM对XML的相关操作

    JAVA利用DOM对XML的相关操作,创建,解析都各有一个例子 其中创建分有规律的节点创建,和不规律的节点创建,并附有详细说明及运行效果图, 上传的资料忘记整理了,工程里面的四个XML是程序生成的,请先删除.

    PHP往XML中添加节点的方法

    本文将围绕DOMDocument类来展示如何向XML文档添加节点。 第一步,我们需要创建一个DOMDocument对象。该对象将用于存放我们要操作的XML文档。如果XML文件已经存在,我们也可以通过加载现有的XML文件到DOMDocument...

    vc写的xml格式文件读取

    - 使用CFile时要注意文件模式设置,如"r"表示只读,"w"表示写入(会覆盖原有内容),"a"表示追加。 5. **示例代码**: ```cpp CFile xmlFile; if (!xmlFile.Open("path_to_xml_file.xml", CFile::modeRead)) { ...

    C# 用户登录界面(用户信息保存在XML文档)

    在项目中,增加用户信息意味着向XML文件添加新的用户节点。这可以通过创建一个新的XmlElement,设置其属性(如用户名和密码),然后将其插入到XML文档的适当位置来实现。删除用户则是找到对应的用户节点并移除它。...

    C#操作XML方法.zip_guardlme_xml操作_服务器

    在写入XML方面,可以使用XmlWriter类,它可以创建新的XML文件或向已存在的XML文件追加内容。例如,我们可以创建一个新的XmlElement,设置其属性和子元素,然后使用XmlWriter将这些元素写入XML文件。 修改XML文档...

    Asp.net C# XML文件中数据的增删改查

    在Asp.net C#开发中,XML文件常用于存储轻量级的数据,因为它们易于创建、解析和修改。本文将深入探讨如何在XML文件中进行数据的增删改查操作,主要涉及两种方法:DataSet与XmlTextWriter。 首先,DataSet是.NET ...

    XML.NET Developer Guide Source Code.zip_xml_xml.net

    4. **XmlWriter**:用于生成XML文档的写入器,也支持流式操作,可以创建新的XML文档或向已有的XML文档追加内容。 5. **XPathDocument**和**XPathNavigator**:这两个类用于执行XPath查询。XPath是一种语言,用于...

    C#操作XML实例 完整项目 C#源代码

    3. **XML内容编写**:使用`XmlElement`和`XmlAttribute`类可以创建新的XML节点和属性。首先创建`XmlElement`,设置其属性,然后将其添加到父节点。例如,创建一个新的元素并添加到根节点: ```csharp XmlElement ...

    kettle有关xml的多种写入方式

    - **XML追加步骤**:描述中提到的`ktr_write_xml_append1.ktr`和`ktr_write_xml_append2.ktr`可能就是示例转换,用于向XML文件追加数据。Kettle允许在不覆盖原有内容的情况下向XML文件追加新的数据。这通常用于日志...

    创建文件夹和xml文件并行xml文件中添加信息

    根据提供的文件标题、描述、标签以及部分内容,我们可以总结出以下相关的IT知识点: ### 创建文件夹 在编程领域中,创建文件夹是一项基本操作,尤其是在处理文件系统时。本例中的代码示例展示了如何使用C#语言创建...

    用c#操作Xml

    `XmlWriter`则适用于构建新的XML文档或向现有文档追加内容。 在处理XML时,还需要注意XML的命名空间管理,以及错误处理和异常处理。C#提供了`XmlNode`、`XmlElement`、`XmlAttribute`等类来处理XML的节点、元素和...

    C# 解析xml的相关操作

    - 使用`XmlWriter`类:可以创建新的XML文档或向现有文档追加内容。 ```csharp using (XmlWriter writer = XmlWriter.Create("newfile.xml")) { writer.WriteStartElement("root"); // 写入其他元素和属性 } ...

    Tinyxml使用基本操作

    本篇文章将详细解释TinyXML的基本操作,包括如何创建、加入节点以及对XML文档进行操作。 1. **安装与引入** 在开始使用TinyXML之前,你需要将TinyXML的源文件(如`tinyxml.cpp`、`tinystr.cpp`和`tinyxmlerror.cpp...

    xml 封装接口

    这些方法通常会根据给定的路径(可能是XPath语法)来定位到特定的XML节点,并进行相应的操作。 对于日志记录,封装接口可能会提供类似的方法,但针对的是动态生成和追加日志信息。例如: ```cpp // 记录调试信息 ...

Global site tag (gtag.js) - Google Analytics