Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将字符串[]添加到ArrayList中是否有错误?_Java_Xml_Arrays_String_Parsing - Fatal编程技术网

Java 将字符串[]添加到ArrayList中是否有错误?

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

我有以下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 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];