我正在尝试从xml文档中读取一些int:
<aaa>
<agent>
<name>Agent 1</name>
<position>4 5</position>
<vector>87 78 54 5 -4</vector>
</agent>
</aaa>
这是我的Java代码:
DocumentBuilderFactory documentFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = documentFactory.newDocumentBuilder();
Document document = builder.parse(new File("utility.xml"));
NodeList agents = document.getElementsByTagName("agent");
for(int i=0; i<agents.getLength(); i++) {
Node node = agents.item(i);
if(node.getNodeType() == Node.ELEMENT_NODE) {
Element agente = (Element)node;
String name = agente.getElementsByTagName("name").item(0).getFirstChild().getNodeValue();
String position = agente.getElementsByTagName("position").item(0).getFirstChild().getNodeValue();
String vector = agente.getElementsByTagName("vector").item(0).getFirstChild().getNodeValue();
我想将字符串位置解析为2 Integer(4和5),我想将字符串向量解析为5 Integer(并将它们放入数组中)。 我该怎么做?谢谢你的时间!
答案 0 :(得分:0)
您可以使用Scanner
并使用String
阅读nextInt
的内容:
String stringRead = ...; //imagine you read <position> here
Scanner scanner = new Scanner(stringRead);
List<Integer> intList = new ArrayList<>();
while (scanner.hasNext()) {
intList.add(scanner.nextInt());
}
如果你使用Java 8,那么你可以通过使用流的力量来缩短它:
String stringRead = ...; //imagine you read <position> here
List<Integer> intList = Arrays.stream(stringRead.split("\\s+"))
.map(x -> Integer.valueOf(x))
.collect(Collectors.toList());
答案 1 :(得分:0)
转换为int []
的逻辑public static void main(String args[]) {
String position ="87 78 54 5 -4";
String vector = "4 5";
String[] posArr = position.split(" ");
int[] positionArray = new int[posArr.length];
for(int i = 0 ; i < posArr.length ; i ++) {
positionArray[i] = Integer.parseInt(posArr[i]);
}
String[] vectArr = vector.split(" ");
int[] vectorArray = new int[vectArr.length];
for(int i = 0 ; i < vectArr.length ; i ++) {
vectorArray[i] = Integer.parseInt(vectArr[i]);
}
}