我正在尝试根据Item ID对NodeList中的节点进行排序。 Xml看起来像
<Order>
<Lines>
<Line LineNo="1">
<Item ID="ItemA1"/>
</Line>
<Line LineNo="2">
<Item ID="ItemA4"/>
</Line>
<Line LineNo="3">
<Item ID="ItemA7"/>
</Line>
<Line LineNo="4">
<Item ID="ItemB3"/>
</Line>
<Line LineNo="5">
<Item ID="ItemC1"/>
</Line>
</Lines>
</Order>
因此在排序后,xml看起来像
<Order>
<Lines>
<Line LineNo="1">
<Item ID="ItemA1"/>
</Line>
<Line LineNo="5">
<Item ID="ItemA4"/>
</Line>
<Line LineNo="4">
<Item ID="ItemA7"/>
</Line>
<Line LineNo="3">
<Item ID="ItemB3"/>
</Line>
<Line LineNo="2">
<Item ID="ItemC1"/>
</Line>
</Lines>
</Order>
我为此写的逻辑
Map<String, Element> mapIDAndLine = new HashMap<String, Element>();
NodeList nlLine = doc.getElementsByTagName("Line");
for(int cntLine = 0 ; cntLine < nlLine.getLength() ; cntLine++){
Element elLine = (Element) elLine.item(cntLine);
Element elItem = elLine.getChildElement("Item");
String sItemID = elItem.getAttribute("ID");
if(!mapIDAndLine.containsKey(sItemID )){
mapIDAndLine.put(sItemID , elLine);
}
}
Map<String, String> treeMap = new TreeMap<String, String>(mapIDAndLine);
我得到一张地图,其中所有键(ItemID)都已排序
现在,我可以遍历treeMap并获取相应的行,并在删除原始行后附加到doc。
如果我在这里做错了或者有更好的方法,请告诉我。
提前致谢。