Java 将字符串[]添加到ArrayList中是否有错误?
我有以下XML文件。如您所能,有两个单独的文档:Java 将字符串[]添加到ArrayList中是否有错误?,java,xml,arrays,string,parsing,Java,Xml,Arrays,String,Parsing,我有以下XML文件。如您所能,有两个单独的文档: <doc> <str name="id">1</str> <str name="full_message_t">"""“God loves you more daddy....God loves them more</str> <str name="source_t">” tweets teenage daughter of #MH370 chief steward htt
<doc>
<str name="id">1</str>
<str name="full_message_t">"""“God loves you more daddy....God loves them more</str>
<str name="source_t">” tweets teenage daughter of #MH370 chief steward http://t.co/Abw96As7xv"""</str>
<str name="news_t">TODAY</str>
<str name="link_t">"""“God loves you more daddy....God loves them more</str>
<long name="_version_">1464787951004155905</long>
</doc>
<doc>
<str name="id">2</str>
<str name="full_message_t">"""Flight #MH370 ended flight in southern Indian Ocean</str>
<str name="source_t"> says @NajibRazak http://t.co/NfesnDrcsP"""</str>
<str name="news_t">TOMORROW</str>
<str name="link_t">"""Flight #MH370 ended flight in southern Indian Ocean</str>
<long name="_version_">1464787951005204483</long>
</doc>
1.
“爸爸,上帝更爱你……上帝更爱他们。”
”MH370首席乘务员的女儿在推特上写道http://t.co/Abw96As7xv"""
今天
“爸爸,上帝更爱你……上帝更爱他们。”
1464787951004155905
2.
“飞行”MH370在南印度洋结束飞行
纳吉布拉扎克说http://t.co/NfesnDrcsP"""
明天
“飞行”MH370在南印度洋结束飞行
1464787951005204483
以及以下SAXParser代码:
public class ReadXMLFile {
public static void main(String[] args) {
//Declaration
final String row[] = new String[5]; //id, full_message_t, source_t, news_t, link_t
final ArrayList<String[]> tableResult = new ArrayList<String[]>(); //Store ArrayList of row[]
try {
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
DefaultHandler handler = new DefaultHandler()
{
//When these are TRUE, extract the ocntent
boolean b_id = false;
boolean b_full_message_t = false;
boolean b_source_t = false;
boolean b_news_t = false;
boolean b_link_t = false;
//############################################################################################
//Look for <start> tags
public void startElement(String uri, String localName,String qName,
Attributes attributes) throws SAXException {
System.out.println("Start Element :" + qName);
//Only interested in <str>
if (qName.equalsIgnoreCase("str")) {
String name = attributes.getValue("name");
//Check for name="id"
if(name.equalsIgnoreCase("id")){
b_id = true;
}
//Check for name="full_message_t"
else if(name.equalsIgnoreCase("full_message_t")){
b_full_message_t = true;
}
else if(name.equalsIgnoreCase("source_t")){
b_source_t = true;
}
else if(name.equalsIgnoreCase("news_t")){
b_news_t= true;
}
else if(name.equalsIgnoreCase("link_t")){
b_link_t = true;
}
}//end if
}//end startElement
//############################################################################################
//Look for <end> tags
public void endElement(String uri, String localName,
String qName) throws SAXException {
System.out.println("End Element :" + qName);
//When reach </doc>, row Array is complete. Add into ArrayList
if (qName.equalsIgnoreCase("doc")) {
System.out.println("Push row into Arraylist : " + row[0]);
tableResult.add(row);
}
}//end endElement
//############################################################################################
//Get the content
public void characters(char ch[], int start, int length) throws SAXException {
if (b_id) {
//System.out.println("id : " + new String(ch, start, length));
row[0] = new String(ch, start, length);
System.out.println("The id is " + row[0]);
b_id = false;
}
else if (b_full_message_t) {
//System.out.println("fullmsg : " + new String(ch, start, length));
row[1] = new String(ch, start, length);
System.out.println("The fullmsg is " + row[1]);
b_full_message_t = false;
}
else if (b_source_t) {
//System.out.println("fullmsg : " + new String(ch, start, length));
row[2] = new String(ch, start, length);
System.out.println("The source is " + row[2]);
b_source_t = false;
}
else if (b_news_t) {
//System.out.println("fullmsg : " + new String(ch, start, length));
row[3] = new String(ch, start, length);
System.out.println("The news is " + row[3]);
b_news_t = false;
}
else if (b_link_t) {
//System.out.println("fullmsg : " + new String(ch, start, length));
row[4] = new String(ch, start, length);
System.out.println("The link is " + row[4]);
b_link_t = false;
}
}//end characters
};//end DefaultHandler
//############################################################################################
//Read the String
//saxParser.parse("solrTest.xml", handler);
File file = new File("solrTest.xml");
InputStream inputStream= new FileInputStream(file);
Reader reader = new InputStreamReader(inputStream,"UTF-8");
InputSource is = new InputSource(reader);
is.setEncoding("UTF-8");
saxParser.parse(is, handler);
} catch (Exception e) {
e.printStackTrace();
}
//Test output Arraylist
System.out.println("Test Result");
System.out.println(tableResult.get(0));
System.out.println(tableResult.get(1));
}
}
公共类ReadXMLFile{
公共静态void main(字符串[]args){
//声明
最后一个字符串行[]=新字符串[5];//id、完整消息、源、新闻、链接
final ArrayList tableResult=新ArrayList();//存储行[]的ArrayList
试一试{
SAXParserFactory=SAXParserFactory.newInstance();
SAXParser SAXParser=factory.newSAXParser();
DefaultHandler=新的DefaultHandler()
{
//当这些为真时,提取内容
布尔b_id=false;
布尔b_full_message_t=false;
布尔b_source_t=false;
布尔b_news_t=false;
布尔b_link_t=false;
//############################################################################################
//寻找标签
public void startElement(字符串uri、字符串localName、字符串qName、,
属性)引发SAX异常{
System.out.println(“起始元素:+qName”);
//只对……感兴趣
if(qName.equalsIgnoreCase(“str”)){
字符串名称=attributes.getValue(“名称”);
//检查name=“id”
if(名称.相等信号案例(“id”)){
b_id=真;
}
//检查name=“完整消息”
else if(name.equalsIgnoreCase(“完整消息”)){
b_full_message_t=true;
}
else if(name.equalsIgnoreCase(“source_t”)){
b_source_t=真;
}
else if(name.equalsIgnoreCase(“新闻”)){
b_news_t=真;
}
else if(name.equalsIgnoreCase(“link_t”)){
b_link_t=真;
}
}//如果结束
}//结束startElement
//############################################################################################
//寻找标签
public void endElement(字符串uri、字符串localName、,
字符串(qName)引发异常{
System.out.println(“结束元素:+qName”);
//到达时,行数组已完成。添加到ArrayList
if(qName.equalsIgnoreCase(“文件”)){
System.out.println(“将行推入Arraylist:+row[0]);
tableResult.add(行);
}
}//结束结束语
//############################################################################################
//获取内容
公共无效字符(char ch[],int start,int length)引发异常{
如果(b_id){
//System.out.println(“id:+新字符串(ch,start,length));
行[0]=新字符串(ch、开始、长度);
System.out.println(“id为”+行[0]);
b_id=假;
}
否则如果(b_完整信息){
//System.out.println(“fullmsg:+新字符串(ch,start,length));
行[1]=新字符串(ch、开始、长度);
System.out.println(“完整消息为”+行[1]);
b_full_message_t=false;
}
else if(b_source_t){
//System.out.println(“fullmsg:+新字符串(ch,start,length));
行[2]=新字符串(ch、开始、长度);
System.out.println(“源是”+行[2]);
b_source_t=false;
}
否则如果(b_news_t){
//System.out.println(“fullmsg:+新字符串(ch,start,length));
行[3]=新字符串(ch、开始、长度);
System.out.println(“新闻是”+行[3]);
b_news_t=假;
}
else if(b_link_t){
//System.out.println(“fullmsg:+新字符串(ch,start,length));
行[4]=新字符串(ch、开始、长度);
System.out.println(“链接是”+行[4]);
tableResult.add(row);
row = new String[5];