Java 将数组返回到类

Java 将数组返回到类,java,arrays,xml,multidimensional-array,return,Java,Arrays,Xml,Multidimensional Array,Return,我试图将xml文件名传递给函数(getAllXmlData),提取其数据并将其存储在多维数组中,然后通过xmlArray将xml数据返回给第一个类。我有以下代码: public class Utils { static String[][] getAllXmlData(String strIn1) { File file = new File(strIn1); try { DocumentBuilder builder = Doc

我试图将xml文件名传递给函数(
getAllXmlData
),提取其数据并将其存储在多维数组中,然后通过
xmlArray
将xml数据返回给第一个类。我有以下代码:

public class Utils {

    static String[][] getAllXmlData(String strIn1) {
        File file = new File(strIn1);
        try {
            DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
            Document doc = builder.parse(file);
            NodeList nodes = doc.getElementsByTagName("person");
            System.out.println("Total of elements : " + nodes.getLength());
            String xmlArray[][] = new String[nodes.getLength()][12];
            for (int i = 0; i < nodes.getLength(); i++) {
                Element element = (Element) nodes.item(i);

                NodeList recordID = element.getElementsByTagName("RecordID");
                Element line = (Element) recordID.item(0);
                xmlArray[i][1] = line.getFirstChild().getTextContent();
                xmlArray[i][2] = line.getAttribute("id");

                NodeList lastName = element.getElementsByTagName("LastName");
                line = (Element) lastName.item(0);
                xmlArray[i][3] = line.getFirstChild().getTextContent();

                NodeList firstName = element.getElementsByTagName("FirstName");
                line = (Element) firstName.item(0);
                xmlArray[i][4] = line.getFirstChild().getTextContent();

                NodeList title = element.getElementsByTagName("Title");
                line = (Element) title.item(0);
                xmlArray[i][5] = line.getFirstChild().getTextContent();

                NodeList hobby = element.getElementsByTagName("Hobby");
                line = (Element) hobby.item(0);
                xmlArray[i][6] = line.getFirstChild().getTextContent();

                NodeList phone1 = element.getElementsByTagName("CellPhone");
                line = (Element) phone1.item(0);
                xmlArray[i][7] = line.getFirstChild().getTextContent();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return xmlArray;
    }
}
我感谢任何帮助。此外,如果有更有效、更动态的方法将xml数据存储在数组中,而不必逐个元素进行存储。
Thx将xmlArray移出try/catch:

public class Utils {         
         static String[][] getAllXmlData(String strIn1) {    
                        File file = new File(strIn1);
                        String xmlArray[][] = null;
                        try {
                                DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
                                Document doc = builder.parse(file);
                                NodeList nodes = doc.getElementsByTagName("person");
                                System.out.println("Total of elements : " + nodes.getLength());
                                xmlArray = new String[nodes.getLength()][12];     
                                for (int i = 0; i < nodes.getLength(); i++) {
                                        Element element = (Element) nodes.item(i);

                                        NodeList recordID = element.getElementsByTagName("RecordID");
                                        Element line = (Element) recordID.item(0);
                                        xmlArray[i][1]=line.getFirstChild().getTextContent();
                                        xmlArray[i][2]=line.getAttribute("id");

                                        NodeList lastName = element.getElementsByTagName("LastName");
                                        line = (Element) lastName.item(0);
                                        xmlArray[i][3]=line.getFirstChild().getTextContent();

                                        NodeList firstName = element.getElementsByTagName("FirstName");
                                        line = (Element) firstName.item(0);
                                        xmlArray[i][4]=line.getFirstChild().getTextContent();

                                        NodeList title = element.getElementsByTagName("Title");
                                        line = (Element) title.item(0);
                                        xmlArray[i][5]=line.getFirstChild().getTextContent();

                                        NodeList hobby = element.getElementsByTagName("Hobby");
                                        line = (Element) hobby.item(0);
                                        xmlArray[i][6]=line.getFirstChild().getTextContent();

                                        NodeList phone1 = element.getElementsByTagName("CellPhone");
                                        line = (Element) phone1.item(0);
                                        xmlArray[i][7]=line.getFirstChild().getTextContent();
                             }
                        }
                        catch (Exception e) {
                                     e.printStackTrace();
                        }      
                        return xmlArray;
         }
}
公共类Utils{
静态字符串[][]getAllXmlData(字符串strIn1){
文件文件=新文件(strIn1);
字符串xmlArray[][]=null;
试一试{
DocumentBuilder=DocumentBuilderFactory.newInstance().newDocumentBuilder();
文档doc=builder.parse(文件);
NodeList nodes=doc.getElementsByTagName(“person”);
System.out.println(“元素总数:+nodes.getLength());
xmlArray=新字符串[nodes.getLength()][12];
对于(int i=0;i
该声明位于try-catch块内。超出该范围的任何内容都无法访问它。确定。谢谢。但是如何才能得到数组的确切大小呢?您只是将数组声明在try/block的作用域之外,以便以后可以访问它。您仍然在当前拥有它的地方实例化它。
public class Utils {         
         static String[][] getAllXmlData(String strIn1) {    
                        File file = new File(strIn1);
                        String xmlArray[][] = null;
                        try {
                                DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
                                Document doc = builder.parse(file);
                                NodeList nodes = doc.getElementsByTagName("person");
                                System.out.println("Total of elements : " + nodes.getLength());
                                xmlArray = new String[nodes.getLength()][12];     
                                for (int i = 0; i < nodes.getLength(); i++) {
                                        Element element = (Element) nodes.item(i);

                                        NodeList recordID = element.getElementsByTagName("RecordID");
                                        Element line = (Element) recordID.item(0);
                                        xmlArray[i][1]=line.getFirstChild().getTextContent();
                                        xmlArray[i][2]=line.getAttribute("id");

                                        NodeList lastName = element.getElementsByTagName("LastName");
                                        line = (Element) lastName.item(0);
                                        xmlArray[i][3]=line.getFirstChild().getTextContent();

                                        NodeList firstName = element.getElementsByTagName("FirstName");
                                        line = (Element) firstName.item(0);
                                        xmlArray[i][4]=line.getFirstChild().getTextContent();

                                        NodeList title = element.getElementsByTagName("Title");
                                        line = (Element) title.item(0);
                                        xmlArray[i][5]=line.getFirstChild().getTextContent();

                                        NodeList hobby = element.getElementsByTagName("Hobby");
                                        line = (Element) hobby.item(0);
                                        xmlArray[i][6]=line.getFirstChild().getTextContent();

                                        NodeList phone1 = element.getElementsByTagName("CellPhone");
                                        line = (Element) phone1.item(0);
                                        xmlArray[i][7]=line.getFirstChild().getTextContent();
                             }
                        }
                        catch (Exception e) {
                                     e.printStackTrace();
                        }      
                        return xmlArray;
         }
}