java xml sax_Java SAX解析器 - 修改XML文档

全屏

演示示例

这是我们需要通过修改XML输入文件附加 Pass

在标记结束<?xml  version="1.0"?>

dinkar

kad

dinkar

85

Vaneet

Gupta

vinni

95

jasvir

singn

jazz

90

SAXModifyDemo.javapackage com.yiibai.xml;

import java.io.*;

import org.xml.sax.*;

import javax.xml.parsers.*;

import org.xml.sax.helpers.DefaultHandler;

public class SAXModifyDemo extends DefaultHandler {

static String displayText[] = new String[1000];

static int numberLines = 0;

static String indentation = "";

public static void main(String args[]) {

try {

File inputFile = new File("input.txt");

SAXParserFactory factory =

SAXParserFactory.newInstance();

SAXModifyDemo obj = new SAXModifyDemo();

obj.childLoop(inputFile);

FileWriter filewriter = new FileWriter("newfile.xml");

for(int loopIndex = 0; loopIndex 

filewriter.write(displayText[loopIndex].toCharArray());

filewriter.write('\n');

System.out.println(displayText[loopIndex].toString());

}

filewriter.close();

}

catch (Exception e) {

e.printStackTrace(System.err);

}

}

public void childLoop(File input){

DefaultHandler handler = this;

SAXParserFactory factory = SAXParserFactory.newInstance();

try {

SAXParser saxParser = factory.newSAXParser();

saxParser.parse(input, handler);

} catch (Throwable t) {}

}

public void startDocument() {

displayText[numberLines] = indentation;

displayText[numberLines] += "<?xml  version=\"1.0\" encoding=\""+

"UTF-8" + "\"?>";

numberLines++;

}

public void processingInstruction(String target,

String data) {

displayText[numberLines] = indentation;

displayText[numberLines] += "";

displayText[numberLines] += target;

if (data != null && data.length() > 0) {

displayText[numberLines] += ' ';

displayText[numberLines] += data;

}

displayText[numberLines] += "?>";

numberLines++;

}

public void startElement(String uri, String localName,

String qualifiedName, Attributes attributes) {

displayText[numberLines] = indentation;

indentation += "    ";

displayText[numberLines] += '

displayText[numberLines] += qualifiedName;

if (attributes != null) {

int numberAttributes = attributes.getLength();

for (int loopIndex = 0; loopIndex 

loopIndex++){

displayText[numberLines] += ' ';

displayText[numberLines] += attributes.getQName(loopIndex);

displayText[numberLines] += "=\"";

displayText[numberLines] += attributes.getValue(loopIndex);

displayText[numberLines] += '"';

}

}

displayText[numberLines] += '>';

numberLines++;

}

public void characters(char characters[],

int start, int length) {

String characterData = (new String(characters, start, length)).trim();

if(characterData.indexOf("\n")  0) {

displayText[numberLines] = indentation;

displayText[numberLines] += characterData;

numberLines++;

}

}

public void endElement(String uri, String localName,

String qualifiedName) {

indentation = indentation.substring(0, indentation.length() - 4) ;

displayText[numberLines] = indentation;

displayText[numberLines] += "";

displayText[numberLines] += qualifiedName;

displayText[numberLines] += '>';

numberLines++;

if (qualifiedName.equals("marks")) {

startElement("", "Result", "Result", null);

characters("Pass".toCharArray(), 0, "Pass".length());

endElement("", "Result", "Result");

}

}

}

这将产生以下结果:<?xml  version="1.0" encoding="UTF-8"?>

dinkar

kad

dinkar

85

Pass

Vaneet

Gupta

vinni

95

Pass

jasvir

singn

jazz

90

Pass

分享到:

0评论

14487a65ea137d8f9ac97cdce44a0324.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值