2014-01-17 203 views
0

我在Oracle中有一個關係數據庫。將oracle數據庫轉換爲xml

我想將此數據庫轉換爲xml。 例如, 我有一個表在Oracle中類似以下: (這是一個很簡單的例子,在我的數據庫有一個像沒有表)

TABLE: PERSON 
---------------------------------------------------- 
ID | NAME | DESCRIPTION 
---------------------------------------------------- 
1 | George | Employee 
2 | Mary | Student 
3 | Joe | Employee 
------------------------------------------------------- 

XML輸出將

<?xml version="1.0" encoding="UTF-8"?> 
<persons> 
    <person> 
    <ID>1</ID> 
    <NAME>George</NAME> 
    <DESCRIPTION>Employee</DESCRIPTION> 
    </person> 
    <person> 
    <ID>2</ID> 
    <NAME>Mary</NAME> 
    <DESCRIPTION>Student</DESCRIPTION> 
    </person> 
    <person> 
    <ID>3</ID> 
    <NAME>Joe</NAME> 
    <DESCRIPTION>Employee</DESCRIPTION> 
    </person> 
</persons> 

哪個是進行轉換的最佳方式?

1)我可以自己做嗎?

一)創建)基於數據庫的設計 b我自己的XSD架構創建我自己的機制,是要通過選擇和連接表自動創建XML文檔。

OR

2)難道我爲了使用一個在線工具,使該轉換? 如果是的話,哪個是最好的轉換?

感謝,提前

回答

2

Oracle提供的內置功能,這:

with v_data as (
    select 1 as id, 'George' as name, 'Employee' as description from dual union all 
    select 2 as id, 'Mary' as name, 'Student' as description from dual union all 
    select 3 as id, 'Joe' as name, 'Employee' as description from dual) 
select 
    xmlelement("Persons", 
    xmlagg(
     xmlelement("Person", 
     xmlforest(e.id, e.name, e.description) 
    ) 
    order by id) 
) as "Person list" 
from v_data e 

根據您真實的數據,您可能想要使用DBMS_XMLGEN或類似的增量方法,請參閱Oracle XML DB Developer's Guide

+0

我可以整合這個sql語句是一個php或Java文件嗎? – programmer

+1

對不起,我不明白你的問題 - 這是一個正常的SQL語句,你應該可以像使用其他SQL語句一樣使用Java(JDBC)或PHP(你可能必須使用getCLOBVal將結果從XMLType轉換爲CLOB ()首先,但)。 –

+0

我將使用PHP來連接到Oracle數據庫。那麼,如果我執行上面的SQL語句,是將結果寫入XML文件還是該查詢的輸出將是包含xml標記的字符串? – programmer

1

如果您使用任何編程語言如Java,您可以像使用JPA /休眠/等任何對象關係映射框架。並使用JAXB或XStream或任何其他xml序列化API將映射對象序列化爲xml。

如果你想手工做的,喜歡的Altova MapForce的工具也可以使用,如果你能負擔得起

http://www.altova.com/mapforce/database-mapping.html

3

直接由oracle引擎:

select xmlelement("PERSON", xmlforest(id, name, description)) 
from PERSON;