我需要解析下面的格式xml并根据我必须生成新xml的值。
<transactionDataSection>
<FIELD name="VAR11" value="Subash"/>
<FIELD name="VAR10" value="India"/>
<FIELD name="VAR9" value="XXXX"/>
<FIELD name="VAR8" value="YYYY"/>
<TableDataSection>
<table>
<tableName>12345678</tableName>
<row>
<rowNumber>1</rowNumber>
<rowData>
<FIELD name="VAR1" value="Val1"/>
<FIELD name="VAR2" value="Val2"/>
<FIELD name="VAR3" value="Val3"/>
</rowData>
</row>
<row>
<rowNumber>2</rowNumber>
<rowData>
<FIELD name="VAR4" value="Val4"/>
<FIELD name="VAR5" value="Val5"/>
<FIELD name="VAR6" value="Val6"/>
</rowData>
</row>
</table>
</TableDataSection>
</transactionDataSection>
在这里,我面临着检索字段名称和值的挑战。这里我需要分别在事务数据部分内部的字段名称和值以及表数据部分来构造新的xml。 已尝试使用DOM解析器,但它提供了所有字段名称和值。
NodeList transactionDataSectionNodeList = document.getElementsByTagName("transactionDataSection");
for(int i=0;i<transactionDataSectionNodeList.getLength();i++){
Node transactionDataSectionNode = transactionDataSectionNodeList.item(i);
if(transactionDataSectionNode.getNodeType() == Node.ELEMENT_NODE){
Element eElement = (Element) transactionDataSectionNode;
NodeList fieldList = eElement.getChildNodes();
for(int y=0;y<fieldList.getLength();y++){
Node fieldNode = fieldList.item(y);
if(fieldNode.getNodeType() == Node.ELEMENT_NODE){
Element element=(Element) fieldNode;
if(fieldNode.getNodeName().equals("FIELD")){
Element field2 = doc.createElement("field");
Element name2 = doc.createElement("name");
Element value2 = doc.createElement("value");
/*System.out.println("name : "+element.getAttribute("name"));
System.out.println("value : "+element.getAttribute("value"));*/
name2.appendChild(doc.createTextNode(element.getAttribute("name")));
value2.appendChild(doc.createTextNode(element.getAttribute("value")));
field2.appendChild(name2);
field2.appendChild(value2);
Transaction_data.appendChild(field2);
}
}
}
}
}
但我想分别在事务数据部分内的字段名称和表数据部分。 有人可以帮忙吗?
答案 0 :(得分:0)
自
TableDataSection
是
的孩子transactionDataSection
,当你这样做时
Element eElement = (Element) transactionDataSectionNode;
NodeList fieldList = eElement.getChildNodes();
你也得到了TableDataSection。
您可以做的是,对于每个子节点都有一个检查,
if(fieldNode.getNodeName().equals("TableDataSection"){
callXMLGenerationForTableDataSection(fieldNode);
}