我目前正在解析XML文档并将XML数据存储在String []中。这就是我的工作:
db = dbf.newDocumentBuilder();
Document dom = db.parse(in);
Element docElem = dom.getDocumentElement();
NodeList valuesList= docElem.getElementsByTagName("values");
Element value = (Element) valuesList.item(0);
//Split on every white space
String[] myValues = value.getFirstChild().getNodeValue().split("\\s+");
System.out.println(myValues.length);
//Output: 5400
for(String val : myValues){
System.out.println("Value: " + val);
//This prints out random amount of lines in the console, see figure.
}
循环的输出变化。见下图。
结果可能是第一次执行4145次,第二次执行4198次。
由于String []持有5400项,因此此输出不应该是5400行吗?为什么不呢?
感谢任何解释。
马库斯
答案 0 :(得分:3)
System.out
转到logcat,logcat只是容量有限的缓冲区。超出容量时,将丢弃较旧的条目。缓冲区中System.out
消息的比例取决于系统中的其他logcat活动。
请参阅What is the size limit for Logcat and how to change its capacity?
答案 1 :(得分:0)
如果Logcat大小限制不是您的问题,那么请尝试以下方法 -
//Split on every white space
String[] myValues = value.getFirstChild().getNodeValue().split("\\s+");
System.out.println(myValues.length);
//Output: 5400
List<String> stringList = Arrays.asList(myValues);
List<String> list = Collections.synchronizedList(stringList);
synchronized(list)
{
Iterator<String> iterator = list.iterator();
while (iterator.hasNext())
System.out.println(iterator.next());
}