Java 将数组返回到类
我试图将xml文件名传递给函数(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
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;
}
}