Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.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 是否可以将xml字符串拆分为数组中的元素?_Java - Fatal编程技术网

Java 是否可以将xml字符串拆分为数组中的元素?

Java 是否可以将xml字符串拆分为数组中的元素?,java,Java,假设我有xml字符串 String str="<loan><account>123456</account><name>RamaKrishna</name><principle>1000</principle><issue_date>Jan-1-2013</issue_date><interest_rate>12%</interest_rate></loan&

假设我有xml字符串

String str="<loan><account>123456</account><name>RamaKrishna</name><principle>1000</principle><issue_date>Jan-1-2013</issue_date><interest_rate>12%</interest_rate></loan>"
String str=“123456RamaKrishna1000Jan-1-201312%”
我的输出应该是

arr = ["<account>123456</account>","<name>RamaKrishna</name>","<principle>1000</principle>","<issue_date>Jan-1-2013</issue_date>","<interest_rate>12%</interest_rate>"]
arr=[“123456”、“罗摩克里希纳”、“1000”、“2013年1月1日”、“12%”]
您可以尝试:

字符串[]split=str.split((?=(?))”

如果你想保持标签完好无损。 ?=应保留您的标签,但是单独删除最后一个loan标签,这将在不嵌套的情况下工作。如果不保留标记,则可以执行以下操作:

字符串[]split=s.split(“”)


这个答案是静态的(只是回答您的问题),就像@Vikrant Kashyap提到的,XML文档是更通用的解决方案的更好选择

public static void main(String[] args) {

    //Orginal string, remove the loan tags
    String str="<loan><account>123456</account><name>RamaKrishna</name><principle>1000</principle><issue_date>Jan-1-2013</issue_date><interest_rate>12%</interest_rate></loan>";
    str = str.replace("<loan>", "");
    str = str.replace("</loan>", "");

    //Create an array of the string
    List<Character> list = new ArrayList<Character>();
    for(char c : str.toCharArray()) {
            list.add(c);
    }       

    //Result
    ArrayList<String> tmp = XmlComma(list);

}
publicstaticvoidmain(字符串[]args){
//原始字符串,删除贷款标签
String str=“123456罗摩克里希纳1000JAN-1-201312%”;
str=str.replace(“,”);
str=str.replace(“,”);
//创建字符串的数组
列表=新的ArrayList();
for(字符c:str.toCharArray()){
增加(c)项;
}       
//结果
ArrayList tmp=xmlcoma(列表);
}
以及xmlcoma方法:

public static ArrayList<String> XmlComma(List<Character> input) {
        ArrayList<String> result = new ArrayList<String>();
        String output = "";
        for(int i = 0; i < input.size(); i++)
        {
            if(i != (input.size() -1))
            {
                if(!input.get(i).equals(','))
                {
                    output += input.get(i);
                }
                if(input.get(i).equals('>') && input.get(i+1).equals('<'))
                {               
                    result.add(output);
                    output = "";
                }
            }
            else
            {
                output += '>';
                result.add(output);
            }
        }
        return result;      
    }
publicstaticarraylistxmlcoma(列表输入){
ArrayList结果=新建ArrayList();
字符串输出=”;
对于(int i=0;i')和&input.get(i+1).equals('>');
结果。添加(输出);
}
}
返回结果;
}

您必须编写自己的实现,我想您可以使用
JAXB
从XML字符串创建一个对象。该对象应该包含帐户、名称等属性。然后从该对象可以获得这些属性的不同值并相应地准备数组。最好使用
XML文档nt
读卡器是更好的选择。