xml存入資料庫
Ⅰ 老師說將xml解析後存儲到資料庫中,怎樣將解析後的存儲到資料庫中
因為不知道你用的是什麼語言。我大概說一下意思吧。
XML文件本身是一個內容的結構體,資料庫是一個表格結構的內容結構體,因此要把XML中的標簽或者是屬性解析成資料庫中相應的表頭,然後將XML中的元素填入相應的表中。就完成了數據的解析和存儲。
Ⅱ java怎麼把解析的xml數據添加到資料庫中
不說廢話直接上代碼,下面是要讀取的xml文件:
<?xmlversion="1.0"encoding="UTF-8"?>
<PERSON>
<NAME>a1</NAME>
<ADDRESS>b1</ADDRESS>
<TEL>c1</TEL>
<FAX>d1</FAX>
<EMAIL>e1</EMAIL>
</PERSON>
下面是讀取xml文件的java代碼,在資料庫中建一張和xml文件欄位對應的表,將讀取的數據插入到表中。如果數據插入不會,歡迎繼續追問:
importjava.io.File;
importjavax.xml.parsers.DocumentBuilder;
importjavax.xml.parsers.DocumentBuilderFactory;
importorg.w3c.dom.Document;
importorg.w3c.dom.Element;
importorg.w3c.dom.NodeList;
publicclassTest{
publicstaticvoidmain(String[]args)throwsException{
System.out.println("22");
DocumentBuilderFactorydbf=DocumentBuilderFactory.newInstance();
DocumentBuilderdb=dbf.newDocumentBuilder();
Documentdocument=db.parse(newFile("candidate.xml"));
NodeListlist=document.getElementsByTagName("PERSON");
for(inti=0;i<list.getLength();i++)
{
Elementelement=(Element)list.item(i);
Stringcontent=element.getElementsByTagName("NAME").item(0).getFirstChild().getNodeValue();
content=element.getElementsByTagName("ADDRESS").item(0).getFirstChild().getNodeValue();
content=element.getElementsByTagName("TEL").item(0).getFirstChild().getNodeValue();
content=element.getElementsByTagName("FAX").item(0).getFirstChild().getNodeValue();
content=element.getElementsByTagName("EMAIL").item(0).getFirstChild().getNodeValue();
}
}
}
Ⅲ 做一個網站,把數據保存在xml文件中,跟把數據保存在資料庫中,區別有多大
實話實說,個人接觸到使用Xml文件方式來保存數據的場景少之又少。除去求學期間根據課堂要求做靜態網站時用於存儲一些展示性數據,還有就是在WPF開發中保存一些常用但又不經常變化的離線數據。反而常使用Xml來做配置文件(例如SpringMvc、MyBatis和LogBack)網路數據傳輸和交互標准(例如WebService)、工作流設計(例如Activiti6)等情況較為常見。
Xml用於單設備數據存儲的情況還說得過去,例如離線數據同步可以放在Xml數據文件中。在傳統行業電商平台的規格,材質,產區等屬性相對固定,Xml文件能很好勝任。再比如做一個內部使用的抽獎程序,將潛在用戶群體以Xml方式保存也是不錯的選擇吧。所以Xml文件充當小型離線資料庫還行。
而資料庫的范圍就比較寬泛,大致可以分為關系型資料庫和非關系型資料庫兩大類。
關系型資料庫以Oracle和Mysql最為流困念渣行,學過編程的朋友應該耳熟能詳,也是職場面試經久不衰的考察重點。
而NoSql算是後起之秀。在業務繁多復雜的當下,一些場景下關系型資料庫應付起來相當吃力,有著更為復雜分類的非關系型資料庫孕育而生。NoSql在搜索引擎(ElasticSearch)、鍵值(redis)、面向文檔(Mongodb)和列存儲(Hbase)等方面都能做高拆到得心應手。這些就讓其有著更強的業務針對性,相比傳統關系型資料庫有著質的提升。下面簡單列舉幾個應用場景。
Redis可用於計數、分布式鎖實現、單點登錄、限流和緩存數據等;
在復雜頁面的數據不便以表數據結構保存時,使用Mongodb整頁存儲方便又簡單;
Elasticsearch就是以空間換時間典型代表,在做搜索引擎和日誌記錄(ELK)等方面有很大優勢;
Hbase不必再像關系型資料庫那樣以行為存儲單元,而是以列為基準,非常便於數據結構拓展。
當下流行徽服務和各種解耦,連關系型資料庫都不再設計外鍵關系,非關系型資料庫大行其道,Xml文件用來汪悄保存數據顯然已經不合時宜,當然也不能否認關系型資料庫的地位和Xml的作用。重要數據或某些行業的特殊性還是要以關系型資料庫為根基,畢竟事務、穩定性、安全性和技術恢復支持等方面需要考慮的重點。
Ⅳ xml文件導入sql資料庫
SQLServer2005分解並導入xml文件[@more@]
1. 一次性導入:
DECLARE @idoc int;
DECLARE @doc xml;
SELECT @doc=BulkColumn FROM OPENROWSET(BULK N'E:MStarInstryCodes.xml', SINGLE_BLOB) AS x
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
SELECT * into tmp_tab FROM OPENXML (@idoc, '/Root/Record'/',2)
WITH
(
InstryCode varchar(10)
,InstryGlobalId varchar(10)
,InstryName varchar(100)
,SectorCode varchar(10)
,SectorGlobalId varchar(10)
,SectorName varchar(100)
,SuperSectorCode varchar(10)
,SuperSectorName varchar(100)
,GroupCode varchar(10)
,GroupName varchar(100)
,CountryId varchar(3)
)
EXEC sp_xml_removedocument @idoc
select * from tmp_tab
2. 先導入到表中varchar(MAX)列,然後再用OPENXML解析,讀出。
-- 使用SINGLE_CLOB參數,tmp_raw中欄位為varcahr(MAX)類型
SELECT * into tmp_raw FROM OPENROWSET(BULK N'E:MStarInstryCodes.xml', SINGLE_CLOB) AS x
DECLARE @idoc int;
DECLARE @doc xml;
select @doc = BulkColumn from tmp_raw
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
SELECT top 10 * FROM OPENXML (@idoc, '/Root/Record', 1)
WITH
(
InstryCode varchar(10)
,InstryGlobalId varchar(10)
,InstryName varchar(100)
,SectorCode varchar(10)
,SectorGlobalId varchar(10)
,SectorName varchar(100)
,SuperSectorCode varchar(10)
,SuperSectorName varchar(100)
,GroupCode varchar(10)
,GroupName varchar(100)
,CountryId varchar(3)
)
EXEC sp_xml_removedocument @idoc
Ⅳ idea解析xml文件保存到資料庫
打開我們的IDEA的settings,配置如下信息 把SQL Dialect改成我們所用的資料庫,
把我們寫SQL的mapper.xml文件夾路徑配置在Path中,保存。
Ⅵ 如何用java解析xml文檔,然後將數據存到資料庫里
package test11;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import java.io.*;
public class XMLUtil
{
//該方法用於從XML配置文件中提取具體類類名,並返回一個實例對象
public static Object getBean()
{
try
{
//創建文檔對象
DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = dFactory.newDocumentBuilder();
Document doc;
doc = builder.parse(new File("config.xml"));
//獲取包含類名的文本節點
NodeList nl = doc.getElementsByTagName("className");
Node classNode=nl.item(0).getFirstChild();
String cName=classNode.getNodeValue();
//通過類名生成實例對象並將其返回
Class c=Class.forName(cName);
Object obj=c.newInstance();
return obj;
}
catch(Exception e)
{
e.printStackTrace();
return null;
}
}
}
<?xml version="1.0"?>
<config>
<className>test11.CatAdapter</className>
</config>
然後你吧解析處理的值放到數組或LIST或其他的你能存放的對象中。再寫SQL插入到資料庫就好了啊。主要資料庫事務處理或用批處理
Ⅶ 關系資料庫中如何存儲xml數據
XML文檔的一個普通存在的問題是如何持久保存(Persist) XML文檔。在一個關系資料庫中存儲XML文檔是一個非常常用的方法,因為當前關系資料庫的使用非常廣泛。
將XML文檔插入到資料庫中不是簡單的方法,這其中需要很多其它額外的考慮。現在我提供了一些技巧,你可以使用這些技巧在關系資料庫中存儲XML文檔。
1、文檔表:
一個最簡單和容易的方法是,在一個具有單一文本域的資料庫中建立一個表,由此你可以在表中存儲XML數據。由於這些特定資料庫和特定XML文檔,這一文本域可以是一個二進制大型對象(BLOB,binary large object)。有些資料庫需要存儲的是大量的BLOB數據而不是文本。
這一方法的優點是,將數據存入表中變得相當簡單,而且重新獲得也同樣很容易。這種文檔表的管理也很方便。
這種方法的缺點在於你將可能無法進行一些有用的文本搜索,並且在放置特定文檔時也會碰到困難,因為沒有任何方法來識別表中的文檔;
2、主鍵表:
下一個比較復雜的方法是使用一個主鍵表(keyed table)。這種方法與文檔表非常相似,但此時你的表中包含兩個域:一個唯一的主鍵和XML文檔。使用這種方法,你既可以具有存儲和獲得整個XML文檔的簡潔性,也可以使用一些管理這些唯一主鍵的復雜操作;
建立主鍵的一種通用方法是使用XML文檔中的MD5求和檢驗。請記住如果你想在表中包括多份XML文檔,這一方法遠不足夠。在這種情況下,你可以添加額外的key fields標識鍵列。
與文檔表一樣,主鍵表很容易執行,它可以在表中查找特定的文檔。然而,與文檔表一樣,你仍然不能執行任何文本查詢;
3、有限離散表:
這一方法更加復雜,但它給你帶來更多的靈活性。使用有限離散表,你可以建立用於存儲有限分散的XML信息的表,這是什麼意思?請看以下的例子:
假設你具有一個順序文檔。在文檔的根部(Root)有一個Order元素,這一元素包括CustomerInfo, ItemInfo, 以及hippingInfo元素。在資料庫中,你可以建立一個OrderDoc表,表中包含一個ID域,一個CustomerInfoId域,一個ItemInfoId域,一個ShippingInfoId域。然而,你還可以建立一個CustomerInfoId表,一個ItemInfoId表,一個ShippingInfoId表。這些表都包含很多信息相關的各自的ID域,這些信息包括用戶,選項,郵寄信息。在這一表中,還包含著其它額外的等級。比如,CustomerInfo表包含AddressInfo域,即從AddressInfo表中引用的入口。
這種方法的優點是,允許你更緊密地建立XML數據的模型。這種方法使得你進行數據的一些成熟的查詢。它也使得數據的使用性更強,因為你不再需要XML分析器來讀取數據。
不足之處是這種方法需要更多的精力來開發和維護。這意味著每一文檔都需要解析成分離的部分,然後存儲在資料庫中。如果這一過程沒有得以很好管理,有可能會丟失一些數據。而且,這也意味著,當從一個資料庫中獲得一個XML文檔時,你不得不連接這些分散的部分。