gpt4 book ai didi

java - 无法使用java从xml中读取特殊字符

转载 作者:行者123 更新时间:2023-11-29 08:16:15 25 4
gpt4 key购买 nike

当我尝试使用 SAX 解析器从 java 中读取 xml 时,它无法读取特殊字符后出现的元素中的内容

例如:

<title>It's too difficult</title>

使用 SAX 解析器读取后,它只显示 It

如何处理特殊字符。我的示例代码如下

    package com.test.java;

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class ReadXMLUsingSAXParser {




public static void main(String argv[]) {

try {

SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();

DefaultHandler handler = new DefaultHandler() {

int titleCount;
boolean title = false;
boolean description = false;

public void startElement(String uri, String localName,
String qName, Attributes attributes)
throws SAXException {

// System.out.println("Start Element :" + qName);


if (qName.equalsIgnoreCase("title")) {
title = true;
titleCount+=1;
}

if (qName.equalsIgnoreCase("description")) {
description = true;
}

}

public void endElement(String uri, String localName,
String qName)
throws SAXException {

// System.out.println("End Element :" + qName);

}

public void characters(char ch[], int start, int length)
throws SAXException {


if (title&&titleCount>2) {
System.out.println("title : "
+ new String(ch, start, length)+":"+titleCount);
title = false;
}

if (description) {
System.out.println("description : "
+ new String(ch, start, length));
description = false;
}

}

};

saxParser.parse("C:\\Documents and Settings\\sukumar\\Desktop\\sample.xml", handler);

} catch (Exception e) {
e.printStackTrace();
}
}

}

最佳答案

characters(char ch[], int start, int length) 方法不会读取整行,您应该将字符存储在 StringBuffer 中并在endElemen 方法。

例如:

private StringBuffer buffer = new StringBuffer();

public void endElement(String uri, String localName,
String qName)
throws SAXException {

if (qName.equalsIgnoreCase("title")) {
System.out.println("title: " + buffer);
}else if (qName.equalsIgnoreCase("description")) {
System.out.println("description: " + buffer);
}
buffer = new StringBuffer();
}

public void characters(char ch[], int start, int length)
throws SAXException {
buffer.append(new String(ch, start, length));
}

关于java - 无法使用java从xml中读取特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4681149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com