xml格式化java(怎样用java从xml里读取数据 并且保存为txt格式)

:暂无数据 2026-09-11 02:50:02 :1

xml格式化java(怎样用java从xml里读取数据 并且保存为txt格式)

大家好,今天小编来为大家解答以下的问题,关于xml格式化java,怎样用java从xml里读取数据 并且保存为txt格式这个很多人还不知道,现在让我们一起来看看吧!

本文目录

怎样用java从xml里读取数据 并且保存为txt格式

1. 用xml的java解析库(比如JDOM,DOM4J等等很多)解析xml文件,你可以得到任意一个节点的属性,属性值,子节点等所有信息,从而或者节点下的文本信息
2. 一旦拿到文本信息,用String类的各种操作,比如substring,split等方法,就可以得到abc,def等字符串(你的题意没有说清,比如@abc DEF gh aa:bb_b中的gh为什么被无视了,所以具体的逻辑只有你自己知道)
3. 组合字符串只要用加号就可以了
4. 用FileWriter写文件
你有什么技术不明白?

求java解析xml文档的sax方法

ava的sax解析是基于事件的解析:当解析到xml的某个部分的时候,会触发特定事件,可以在自定义的解析类中定义当事件触发时要做得事情。
我们可以继承org.xml.sax.helpers.DefaultHandler类(该类是org.xml.sax.helpers.ContentHandler的接口实现类)来覆盖ContentHandler接口的各种方法,这些方法将定义各个事件所触发的程序动作。
package com.thomas.xml.sax;
import org.xml.sax.Attributes;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class ThomasSAXHandler extends DefaultHandler {
private StringBuffer xml;//格式化后的XML文件内容
private static int step = 0;//元素层次
public ThomasSAXHandler(){
this.xml = new StringBuffer();
}
public StringBuffer getXml() {
return xml;
}
public void setXml(StringBuffer xml) {
this.xml = xml;
}
/**
* 给字符串添加TAB,使其能格式化输出,在这里第step层元素缩进step个Tab
*/
private void appendTab(){
for(int i = 1 ; i《step; i++){
for(int j = 0 ;j《4; j++){
xml.append(’ ’);
}
}
}
/**
* 接收元素中字符数据的通知。
* @param ch - 字符。
* @param start - 字符数组中的开始位置。
* @param length - 从字符数组中使用的字符数。
*/
public void characters(char ch, int start, int length) throws SAXException {
String text = new String(ch,start,length);
text = text.trim();
if(!text.equals("")){
step++;
appendTab();
xml.append(text).append("\r\n");
step--;
}
}
/**
* 接收文档的结尾的通知。
* @exception SAXException - 任何 SAX 异常,可能包装另外的异常。
*/
public void endDocument() throws SAXException {
// TODO Auto-generated method stub
}
/**
* 接收元素结束的通知
* @param uri - 名称空间 URI,如果元素没有任何名称空间 URI,或者没有正在执行名称空间处理,则为空字符串。
* @param localName - 本地名称(不带前缀),如果没有正在执行名称空间处理,则为空字符串。
* @param qName - 限定的名称(带有前缀),如果限定的名称不可用,则为空字符串。
* @exception SAXException - 任何 SAX 异常,可能包装另外的异常。
*/
public void endElement(String uri, String localName, String qName) throws SAXException {
appendTab();
xml.append("《/");
if(!uri.equals("")){
xml.append(uri+":");
}
xml.append(qName).append("》\r\n");
step--;
}
/**
* 结束前缀 URI 范围的映射。
* @param prefix - 被映射的前缀。当默认的映射范围结束时,这是一个空字符串。
* @exception SAXException - 客户端可能会在处理期间抛出一个异常
*/
public void endPrefixMapping(String prefix) throws SAXException {
// TODO Auto-generated method stub
}
/**
* 接收元素内容中可忽略的空白的通知。
* @param ch 来自 XML 文档的字符
* @param start 数组中的开始位置
* @param length 从数组中读取的字符的个数
* @exception SAXException - 任何 SAX 异常,可能包装另外的异常
*/
public void ignorableWhitespace(char ch, int start, int length) throws SAXException {
// TODO Auto-generated method stub
}
/**
* 接收处理指令的通知。
* @param target 处理指令目标
* @param data 处理指令数据,如果未提供,则为 null。该数据不包括将其与目标分开的任何空白
*/
public void processingInstruction(String target, String data) throws SAXException {
// TODO Auto-generated method stub
}
/**
* 接收用来查找 SAX 文档事件起源的对象
* @param locator 可以返回任何 SAX 文档事件位置的对象
*/
public void setDocumentLocator(Locator locator) {
// TODO Auto-generated method stub
}
/**
* 接收跳过的实体的通知。将不为标记结构(如元素开始标记或标记声明)内的实体引用调用此方法。(XML 建议书要求报告所跳过的外部实体。SAX 还报告内部实体扩展 / 非扩展,但不包括在标记结构内部。)
* @param name - 所跳过的实体的名称。如果它是参数实体,则名称将以 ’%’ 开头,如果它是外部 DTD 子集,则将是字符串 ""
* @exception SAXException - 任何 SAX 异常,可能包装另外的异常
*/
public void skippedEntity(String name) throws SAXException {
// TODO Auto-generated method stub
}
/**
* 接收文档的开始的通知
* @exception - SAXException - 任何 SAX 异常,可能包装另外的异常
*/
public void startDocument() throws SAXException {
// TODO Auto-generated method stub
}
/**
* 接收元素开始的通知。
* @param uri - 名称空间 URI,如果元素没有任何名称空间 URI,或者没有正在执行名称空间处理,则为空字符串。
* @param localName - 本地名称(不带前缀),如果没有正在执行名称空间处理,则为空字符串。
* @param qName - 限定的名称(带有前缀),如果限定的名称不可用,则为空字符串。
* @param attributes - 附加到元素的属性。如果没有属性,则它将是空的 Attributes 对象。
* @exception SAXException - 任何 SAX 异常,可能包装另外的异常
*/
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
step++;//元素层次加一
appendTab();
xml.append("《");
if(!uri.equals("")){
xml.append(uri+":");
}
xml.append(qName);
for(int i = 0, size = attributes.getLength(); i《size; i++){
xml.append(’ ’).append(attributes.getQName(i)).append("=\"").append(attributes.getValue(i)).append("\"");
}
xml.append("》\r\n");
}
/**
* 开始前缀 URI 名称空间范围映射。
* @param prefix - 声明的名称空间前缀。对于没有前缀的默认元素名称空间,使用空字符串。
* @param uri - 将前缀映射到的名称空间 URI
* @exception - SAXException - 客户端可能会在处理期间抛出一个异常
*/
public void startPrefixMapping(String prefix, String uri) throws SAXException {
// TODO Auto-generated method stub
}
}
上面是我们自定义的解析器,可以在带有main方法的类中加以测试
package com.thomas.xml.sax;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.InputSource;
public class Test {
public static void main(String args){
try{
SAXParserFactory sf = SAXParserFactory.newInstance();
SAXParser sp = sf.newSAXParser();
ThomasSAXHandler handler = new ThomasSAXHandler();
sp.parse(new InputSource("film.xml"),handler);
System.out.println(handler.getXml());
}
catch(Exception e){
e.printStackTrace();
}
}
}
下面是film.xml
《?xml version="1.0" encoding="gb2312"?》
《Kungfu-vips》
《vip》
《name lang="en,ch"》Bruce Li《/name》
《age》32《/age》
《sex》male《/sex》
《/vip》
《vip》
《name lang="en,ch"》Jakie Chen《/name》
《age》39《/age》
《sex》male《/sex》
《/vip》
《vip》
《name lang="en,ch"》Jet Li《/name》
《age》39《/age》
《sex》male《/sex》
《/vip》
《/Kungfu-vips》
运行test类,可以看到输出结果:
《Kungfu-vips》
《vip》
《name lang="en,ch"》
Bruce Li
《/name》
《age》
32
《/age》
《sex》
male
《/sex》
《/vip》
《vip》
《name lang="en,ch"》
Jakie Chen
《/name》
《age》
39
《/age》
《sex》
male
《/sex》
《/vip》
《vip》
《name lang="en,ch"》
Jet Li
《/name》
《age》
39
《/age》
《sex》
male
《/sex》
《/vip》
《/Kungfu-vips》

java生成xml后毫无格式 求高手指点 代码如下 // 创建根节点

你应该用的jar是jdom吧.一下是格式化方法.
XMLOutputter XMLOut = new XMLOutputter(FormatXML());
public Format FormatXML(){
//格式化生成的xml文件,如果不进行格式化的话,生成的xml文件将会是很长的一行...
Format format = Format.getCompactFormat();
format.setEncoding("utf-8");
format.setIndent(" ");
return format;
}

java中频繁xml格式化报文组装不全

您要问的是java中频繁xml格式化报文组装不全是为什么?解析错误。将Java对象转换为XML格式时,需要使用XML解析器和格式化器,如XML解析器无法正确解析格式化的XML文件,或格式化器在处理XML文件时出现错误,就会导致报文组装不全的问题。

如果你还想了解更多这方面的信息,记得收藏关注本站。

xml格式化java(怎样用java从xml里读取数据 并且保存为txt格式)

本文编辑:admin

更多文章:


withdrawal(withdrawal是什么意思)

withdrawal(withdrawal是什么意思)

今天给各位分享withdrawal是什么意思的知识,其中也会对withdrawal是什么意思进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年10月11日 07:00

根据流程图怎么编写程序(用c语言根据流程图写程序)

根据流程图怎么编写程序(用c语言根据流程图写程序)

大家好,今天小编来为大家解答以下的问题,关于根据流程图怎么编写程序,用c语言根据流程图写程序这个很多人还不知道,现在让我们一起来看看吧!

2026年10月11日 06:00

在from子句中可以出现(如何在from 子句中嵌套查询下面的语句在access中出错!)

在from子句中可以出现(如何在from 子句中嵌套查询下面的语句在access中出错!)

大家好,关于在from子句中可以出现很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于如何在from 子句中嵌套查询下面的语句在access中出错!的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望

2026年10月11日 05:20

countif函数统计个数怎么用(countif函数怎么用 详解Excel中countif函数的使用方法)

countif函数统计个数怎么用(countif函数怎么用 详解Excel中countif函数的使用方法)

其实countif函数统计个数怎么用的问题并不复杂,但是又很多的朋友都不太了解countif函数怎么用 详解Excel中countif函数的使用方法,因此呢,今天小编就来为大家分享countif函数统计个数怎么用的一些知识,希望可以帮助到大

2026年10月11日 03:30

正则匹配数字之前的字符(正则表达式如何匹配前面是数字、中间是“/”、后面也是数字,就像2/3专业的模式)

正则匹配数字之前的字符(正则表达式如何匹配前面是数字、中间是“/”、后面也是数字,就像2/3专业的模式)

本篇文章给大家谈谈正则匹配数字之前的字符,以及正则表达式如何匹配前面是数字、中间是“/”、后面也是数字,就像2/3专业的模式对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问

2026年10月11日 03:00

register语言学(register语言学)

register语言学(register语言学)

“register语言学”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看register语言学(register语言学)!

2026年10月11日 01:40

系统架构设计师可以直接考吗(学生可以报名系统架构设计师吗)

系统架构设计师可以直接考吗(学生可以报名系统架构设计师吗)

“系统架构设计师可以直接考吗”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看系统架构设计师可以直接考吗(学生可以报名系统架构设计师吗)!

2026年10月11日 01:00

orlnsertbootmediinselected(我电脑开机显示这个是什么意思or insert boot media in select)

orlnsertbootmediinselected(我电脑开机显示这个是什么意思or insert boot media in select)

大家好,如果您还对orlnsertbootmediinselected不太了解,没有关系,今天就由本站为大家分享orlnsertbootmediinselected的知识,包括我电脑开机显示这个是什么意思or insert boot med

2026年10月10日 23:00

display的用法(display是什么意思 详解display的含义和用法)

display的用法(display是什么意思 详解display的含义和用法)

大家好,如果您还对display的用法不太了解,没有关系,今天就由本站为大家分享display的用法的知识,包括display是什么意思 详解display的含义和用法的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年10月10日 22:00

html全部居中代码(怎么让网页居中显示,html如何让网页居中)

html全部居中代码(怎么让网页居中显示,html如何让网页居中)

大家好,今天小编来为大家解答以下的问题,关于html全部居中代码,怎么让网页居中显示,html如何让网页居中这个很多人还不知道,现在让我们一起来看看吧!

2026年10月10日 21:10

最近更新

withdrawal(withdrawal是什么意思)
2026-10-11 07:00:01 浏览:0
热门文章

标签列表