方法1: 使用字节流的入口方式:
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
docBuilderFactory.setValidating(false);
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
ByteArrayInputStream bis = new ByteArrayInputStream(content);
org.w3c.dom.Document document = docBuilder.parse(bis);
org.w3c.dom.NodeList rootNodes = document.getChildNodes();
org.w3c.dom.Node fieldDefineNode = rootNodes.item(0);
if (fieldDefineNode.getNodeName().equalsIgnoreCase(FIELD_DEFINITION))
{
org.w3c.dom.NodeList childNodes = fieldDefineNode.getChildNodes();
for (int i = 0; i < childNodes.getLength(); i++)
{
org.w3c.dom.Node childNode = childNodes.item(i);
String nodeName = childNode.getNodeName();
String nodeText = childNode.getTextContent();
if (nodeName.equalsIgnoreCase(RECORDS))
{
fieldDefine.setRecords(Long.parseLong(nodeText));
}
else if (nodeName.equalsIgnoreCase(TABLE_SIZE_IN_BYTES))
{
fieldDefine.setTableSizeInBytes(Long.parseLong(nodeText));
}
else if (nodeName.equalsIgnoreCase(COLUMN))
{
org.w3c.dom.Node nameNode = childNode.getAttributes().getNamedItem(NAME);
org.w3c.dom.Node typeNode = childNode.getAttributes().getNamedItem(TYPE);
String name = nameNode.getNodeValue();
int type = Integer.parseInt(typeNode.getNodeValue());
fieldDefine.getFields().put(name, new Column(name, type));
}
}
}
方法二:使用直接文件读取方式:
File file = new File(filepath);
FileInputStream fis = new FileInputStream(filepath);
int length = (int) file.length();
byte[] buffer = new byte[length];
fis.read(buffer, 0, length);
fis.close();
// XML DOM tree builder to build up for the whole XML tree detector
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
docBuilderFactory.setValidating(false);
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
ByteArrayInputStream bis = new ByteArrayInputStream(buffer);
org.w3c.dom.Document document = docBuilder.parse(bis);
org.w3c.dom.NodeList rootNodes = document.getChildNodes();
org.w3c.dom.Node configNode = rootNodes.item(0);
if (configNode.getNodeName().equalsIgnoreCase(CONFIGURATION))
{
org.w3c.dom.NodeList childNodes = configNode.getChildNodes();
for (int i = 0; i < childNodes.getLength(); i++)
{
org.w3c.dom.Node propertyNode = childNodes.item(i);
String propertyName = propertyNode.getNodeName();
String propertyValue = propertyNode.getTextContent();
if (propertyName.equalsIgnoreCase(PROPERTY))
{
// property getting operation for the whole operation
org.w3c.dom.Node nameNode = propertyNode.getAttributes().getNamedItem(NAME);
String nameValue = nameNode.getNodeValue();
if (nameValue.equalsIgnoreCase(INDEXPATH))
{
this.indexDir = propertyValue;
}
}
}
}