我想創建一個解析器,它可以將XML數據庫提取分析到FlatXMLDataSet中。FlatXmlDataSetBuilder在使用StringBuffer時拋出「java.net.MalformedURLException」
我正在使用StringBuffer來編寫我的FlatXML,然後將其轉換爲FlatXmlDataSet,但它拋出了一個「java.net.MalformedURLException:No protocol」。
所以我試圖從我的StringBuffer創建一個文件並將其解析爲一個FlatXMLDataSet。它的工作原理!但我真的需要使用StringBuffer,因爲一切都必須在內存中使用。
這裏是我的FlatXML樣本:
<?xml version='1.0' encoding='UTF-8'?>
<dataset>
<TABLENAME COL1="1"
COL2="35"
/>
</dataset>
這裏是我使用的代碼示例:
// Write the buffer into a file.
writeBuffer(buffer, "D:\\test.xml");
// Parse the file into a DataSet.
IDataSet test = createDataSet("D:\\test.xml");
// Cast the StringBuffer into an InputSource and give it to
// a FlatXMLDataSetBuider.
InputSource xmlInputStream = new InputSource(buffer.toString());
FlatXmlDataSetBuilder flatXmlBuilder = new FlatXmlDataSetBuilder();
flatXmlBuilder.setColumnSensing(true); // We do not have a dtd to give.
IDataSet dataSet = flatXmlBuilder.build(xmlInputStream); // Error is thrown here
private static void writeBuffer(StringBuffer buffer, String path)
{
try
{
String content = buffer.toString();
File file = new File(path);
// if file doesnt exists, then create it
if (!file.exists())
{
file.createNewFile();
}
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
bw.write(content);
bw.close();
}
catch (Exception e)
{
}
}
private static IDataSet createDataSet(String filePath)
{
IDataSet dataSet = null;
try
{
InputStream is = new FileInputStream(filePath);
InputSource xmlInputStream = new InputSource(is);
FlatXmlDataSetBuilder builder = new FlatXmlDataSetBuilder();
builder.setColumnSensing(true);
dataSet = builder.build(xmlInputStream);
}
catch (Exception e)
{
}
return dataSet;
}
我在做什麼錯?我的意思是,爲什麼我的StringBuffer中的文件起作用,而不是我的StringBuffer本身?
的文件的工作,這是從自身的StringBuffer的數據集不工作 – KDelli