将XML文件的节点拆分出来,求解决,该如何处理
将XML文件的节点拆分出来,求解决
上面是XML报文,需要拆分成下面的样式。
有个参考的例子,是解析节点独立的报文,像这种有层级关系的,求解答
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<Basicinfo>
<element name="InterfaceType">OrderSend</element>
<element name="InterfaceBuzType">BuzInter</element>
<element name="MsgSender">1111111111111</element>
<element name="MsgReceiver">11111111</element>
<element name="SendTime">20131211092749</element>
<element name="ResendTimes">0</element>
</Basicinfo>
<OrderInfo_item>
<element name="CenterManagerTel">00/1234567800</element>
<element name="CustGroup">2012020103</element>
<CircuitInfo_item_GLB>
<element name="AvailablitySla">107630002</element>
<element name="RequireTimeSla">2013-12-20</element>
<GLB_RouteInfo_item>
<element name="RouteOrderNbr">217</element>
<element name="CircuitID">106500221</element>
<element name="PlanNbr">1</element>
</GLB_RouteInfo_item>
<GLB_RouteInfo_item_B>
<element name="RouteOrderNbr">217</element>
<element name="CircuitID">106500221</element>
<element name="RouteType">1</element>
<element name="PlanNbr">1</element>
</GLB_RouteInfo_item_B>
</CircuitInfo_item_GLB>
</OrderInfo_item>
</web-app>
上面是XML报文,需要拆分成下面的样式。
<?xml version="1.0" encoding="UTF-8"?>
<root_Basicinfo>
<Basicinfo>
<element name="InterfaceType">OrderSend</element>
<element name="InterfaceBuzType">BuzInter</element>
<element name="MsgSender">1111111111111</element>
<element name="MsgReceiver">11111111</element>
<element name="SendTime">20131211092749</element>
<element name="ResendTimes">0</element>
</Basicinfo>
</root_Basicinfo>
<?xml version="1.0" encoding="UTF-8"?>
<root_OrderInfo_item>
<OrderInfo_item>
<element name="CenterManagerTel">00/1234567800</element>
<element name="CustGroup">2012020103</element>
</OrderInfo_item>
</root_OrderInfo_item>
<?xml version="1.0" encoding="UTF-8"?>
<root_CircuitInfo_item_GLB>
<CircuitInfo_item_GLB>
<element name="AvailablitySla">107630002</element>
<element name="RequireTimeSla">2013-12-20</element>
</CircuitInfo_item_GLB>
</root_CircuitInfo_item_GLB>
<?xml version="1.0" encoding="UTF-8"?>
<root_GLB_RouteInfo_item>
<GLB_RouteInfo_item>
<element name="RouteOrderNbr">217</element>
<element name="CircuitID">106500221</element>
<element name="PlanNbr">1</element>
</GLB_RouteInfo_item>
</root_GLB_RouteInfo_item>
<?xml version="1.0" encoding="UTF-8"?>
<root_GLB_RouteInfo_item_B>
<GLB_RouteInfo_item_B>
<element name="RouteOrderNbr">217</element>
<element name="CircuitID">106500221</element>
<element name="RouteType">1</element>
<element name="PlanNbr">1</element>
</GLB_RouteInfo_item_B>
</root_GLB_RouteInfo_item_B>
有个参考的例子,是解析节点独立的报文,像这种有层级关系的,求解答
private List<String[]> analysisXml(Document doc) {
String type = "default";
@SuppressWarnings("unchecked")
List<Element> items = doc.selectNodes("/web-app/Basicinfo/element");
for (Element item : items) {
String name = item.attributeValue("name");
if ("InterfaceBuzType".equals(name)) {
type = item.getText();
break;
}
}
items.clear();
// 以二级节点为单位拆分报文
List<String[]> ret = new ArrayList<String[]>();
StringBuilder xmlStr = new StringBuilder(2000);
items = doc.getRootElement().elements();
for (Element element : items) {
xmlStr.setLength(0);
String name = element.getName();
xmlStr.append("<?xml version=\"1.0\" encoding=\"");
xmlStr.append(CopyOfFactory.encoding);
xmlStr.append("\"?>\n<root_");
xmlStr.append(name).append(">\n");
xmlStr.append(element.asXML());
xmlStr.append("\n</root_").append(name).append(">");
ret.add(new String[] { name, xmlStr.toString(), type });
}
items.clear();
return ret;
}
- 1PreparedStatement的批量插入式无序的?该如何处理
- 2为啥有的方法里面throw new 自定义错误类("") 外的方法外面有throws 有的没有
- 3hibernate多对多HQL查询的不解 各位大牛来指点一下吧
- 4大家伙儿hibernate 的项目里用一级缓存和二级缓存吗
- 5hibernate更动字段not null属性不生效
- 6jquery如何样按顺序获取SRC的属性和文本框的值
- 7表单提交的时分保存和返回只要两个图片就好了吗 不要具体的方法
- 8JS如何实现页面按空格键的时候自动替换成‘’
- 9You have an error in your SQL syntax 找了一晚上不知道错哪了
- 10action里面对数据库一系列操作 如何保证原子性呢
文章评论
相关解决方案