假设我有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>"
我的输出应该像
arr = ["<account>123456</account>","<name>RamaKrishna</name>","<principle>1000</principle>","<issue_date>Jan-1-2013</issue_date>","<interest_rate>12%</interest_rate>"]
答案 0 :(得分:1)
这个答案将是静态的(只是回答你的问题)和@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);
}
和XmlComma方法:
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;
}
答案 1 :(得分:0)
你可以尝试:
String [] split = str.split(&#34;(?=(&lt; [^ \ _] +&gt;?&lt; \ /.*?&gt;))&#34;);
如果您正在尝试保持标签不变。 ?=将保留您的标签,但是单独删除最后一个贷款标签,这将无需嵌套即可。如果不保留标签,您可以这样做:
String [] split = s.split(&#34;&lt;。*?&gt;&#34;);