XML和String數據替換 DataCache 03

private static void initalEsbmDBfield(String path)
{
// 初始化XML的解析器
DocumentBuilderFactory documentFactory = DocumentBuilderFactory
.newInstance();
DocumentBuilder documentBuilder = null;
Document doc = null;
try
{
documentBuilder = documentFactory.newDocumentBuilder();
doc = (Document) documentBuilder.parse(path);
// 得到tablelist的子節點有三個<esbtable>
NodeList node_i = doc.getDocumentElement().getChildNodes();
Node node = null;
Node fieldNode = null;
String tablename = null;
List<EsbTableField> listField = null;
for (int i = 0; i < node_i.getLength(); i++)
{
// 取到esbtable節點,這是多節點
node = (Node) node_i.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE)
{
// 取到esbtable節點數據得到表名
tablename = node.getAttributes().getNamedItem("tablename")
.getNodeValue();
// 取到fieldlist節點
fieldNode = node.getChildNodes().item(0);
// 取到fieldlist中的field加點內容,將field轉換成List<EsbTableField>
listField = getEsbmTableField(fieldNode);
logger.debug("Esb table name = " + tablename
+ " field size = " + listField.size());

esbmTable.put(tablename, listField);
}
}
}
catch (Exception e)
{
logger.error("Parse Document fail", e);
}
}

public static List<EsbTableField> getEsbmTableField(Node node)
{
List<EsbTableField> list = new ArrayList<EsbTableField>();
try
{
// fieldList Node
NodeList nodeList = node.getChildNodes();
Node fieldNode = null;
EsbTableField esbTableField = null;
// 遍歷fieldlist中的field節點
for (int i = 0; i < nodeList.getLength(); i++)
{
fieldNode = nodeList.item(i);
if (fieldNode.getNodeType() == Node.ELEMENT_NODE)
{
esbTableField = getEsbTableField((Element) fieldNode);
list.add(esbTableField);
}
}
}
catch (Exception e)
{
logger.error("getEsbmTableField has error:" + e.getMessage());
}
return list;
}

public static EsbTableField getEsbTableField(Element empEl)
{
// 獲取<field> 中的<fieldname>節點值
String fieldname = getTextValue(empEl, "fieldname");
// 獲取<field> 中的<xpathfield>節點值
String xpathField = getTextValue(empEl, "xpathfield");
// 獲取<field> 中的<datetype>節點值
String datetype = getTextValue(empEl, "datetype");

EsbTableField esbTableField = new EsbTableField(fieldname, xpathField,
datetype);
return esbTableField;
}

public static String getTextValue(Element el,String tagName)
{
String textVal=null;
NodeList nl=el.getElementsByTagName(tagName);
if(nl!=null && nl.getLength()>0)
{
Element ele=(Element) nl.item(0);
textVal=ele.getFirstChild().getNodeValue();
}
return textVal;
}

public static Map<Object, Object> getinterfaceMap(String intefaceName)
{

return allProperties.get(intefaceName);
}

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章