2011-12-19 66 views
0

我正在讀取一個CSV文件到數據集中,現在想要得到xml字符串。我無法得到XML格式良好的標籤。我在這裏做什麼?Dataset.GetXml();問題在C#

案例1:如果我在CSV文件中使用標題

案例2:用了航向。

我需要得到相同的標記標題,以便稍後可以在我的代碼中使用。 這裏是我的xml

<NewDataSet> 
    <Table> 
    <George_x0020_Washington>John Adams</George_x0020_Washington> 
    <http_x003A__x002F__x002F_en_x0023_wikipedia_x0023_org_x002F_wiki_x002F_George_Washington>http://en.wikipedia.org/wiki/John_Adams</http_x003A__x002F__x002F_en_x0023_wikipedia_x0023_org_x002F_wiki_x002F_George_Washington> 
    <Independent_x0020_>Federalist</Independent_x0020_> 
    <GeorgeWashington_x0023_jpg>JohnAdams.jpg</GeorgeWashington_x0023_jpg> 
    <thmb_GeorgeWashington_x0023_jpg>thmb_JohnAdams.jpg</thmb_GeorgeWashington_x0023_jpg> 
    <Virginia>Massachusetts</Virginia> 
    </Table></NewDataSet> 

,這裏是我的代碼

OleDbConnection excelConnection = new OleDbConnection 
(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathName + ";Extended Properties=Text;"); 
    OleDbCommand excelCommand = new OleDbCommand(@"SELECT * FROM HS1.csv", excelConnection); 
    OleDbDataAdapter excelAdapter = new OleDbDataAdapter(excelCommand); 
    excelConnection.Open(); 
    DataSet ds = new DataSet(); 
    excelAdapter.Fill(ds); 

回答

0

案例1:如果CSV文件

使用標題行如果您有標題行你應該根據你的名字得到格式良好的XML標籤,而不是那些好的標籤。你可以改變你的SQL來修復,如果你想要

SELECT [First Name] as FirstName, [Web Address] as WebAddress ....

案例2:無標題。

從您的示例XML中,您的CSV文件不包含標題行,並且將第一行的值用作標題。

發生這種情況時,您需要將HDR=No添加到您的連接字符串中,而將第一行視爲值。

Connection String Syntax (ADO.NET)

連接到Excel

微軟Jet提供用於連接到Excel工作簿。在 以下連接字符串中,擴展屬性關鍵字設置爲 特定於Excel的屬性。 「HDR =是;」表示 第一行包含列名稱,而不是數據,「IMEX = 1;」告訴 驅動程序始終將「混合」數據列作爲文本讀取。

所以你的字符串將

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathName + ";Extended Properties=""Text;HDR=No""

然而,你的列將根據他們的位置來命名這意味着。 F1,F2,F3。

如果您願意,您也可以在SELECT中重命名它們。

例如SELECT F1 as Name, F2 URL ....