1
我已動態生成的XML文件動態XML到SQL Server表
-----Example1-----
<items>
<param1>aaaa</param1>
<param2>bbbb</param2>
<param3>cccc</param3>
</items>
-----Example2-----
<items>
<test1>dddd</test1>
<test7>eeee</test7>
<john1>ffff</john1>
<john2>ffff</john2>
</items>
我想這個XML文件轉換爲表這樣
-----SQL TABLE for Example1-----
Name Value
param1 aaaa
param2 bbbb
param3 cccc
-----SQL TABLE for Example2-----
Name Value
test1 dddd
test7 eeee
john1 ffff
john2 ffff
問題 - 項目XML標籤名稱不同在每個xml文件中(如樣本中) - 每個xml文件中的項目編號不同
任何人都有任何想法
在C#UPDATE1樣,我已經做了,但我需要爲此在T-SQL :(
public static void test()
{
string test = @"
<items>
<param1>aaaa</param1>
<param2>bbbb</param2>
<param3>cccc</param3>
</items>
";
XmlDocument newdoc = new XmlDocument();
XmlNode root = newdoc.CreateElement("dataset");
newdoc.AppendChild(root);
XmlDocument doc = new XmlDocument();
doc.InnerXml = test;
XmlNodeList lst = doc.SelectNodes("//items/*");
foreach (XmlNode item in lst)
{
Console.WriteLine(item.Name + ": " + item.InnerXml);
}
}
結果 參數1:AAAA 參數2:BBBB 參數3:CCCC
UPDATE2 partialy解決 我只需要得到XML標籤名稱
declare @foo xml
set @foo = N'
<items>
<param1>aaaa</param1>
<param2>bbbb</param2>
<param3>cccc</param3>
</items>'
SELECT
'' as name, --?? no idea how to get names param1,param2,param3
bar.value('./.','VARCHAR(14)') as value
FROM
@foo.nodes('/items/*') AS foo(bar)
我需要在TSQL簡單的方法,我可以在C#(貼樣品)做到這一點,2,3後小時我可以通過TSQL替換字符串劈裂完成這件事,但我相信,有使用XML選擇這樣的一個簡單的方法... 聲明@foo XML 集@foo = N」 AAAA BBBB CCCC ' SELECT '' 姓名, - ??不知道 bar.value('./ param1 [1]','VARCHAR(14)')作爲值 - 不知道熱點獲取多行 FROM @ foo.nodes('/ items')AS foo酒吧) –
wicherqm
2010-02-07 23:00:24
謝謝 正是我所需要的 「bar.value('local-name(。)','VARCHAR(14)')」:) – wicherqm 2010-02-08 12:28:54