У меня есть следующий XML-файл:
<os:tax>
<os:cat name="abc" id="1">
<os:subcat name="bcd" id="11">
<os:t name="def" id="111">
<os:cut name="hello" id="161" cutURL="/abc/a.html"/>
<os:cut name="hello2" id="162" cutURL="/abc1/a1.html"/>
<os:cut name="hello3" id="163" cutURL="/abc4/a3.html"/>
</os:t>
</os:subcat>
<os:subcat name="xyz" id="33">
<os:t name="def" id="333">
<os:cut name="hello" id="181" cutURL="/abcs/a.html"/>
<os:cut name="hello2" id="182" cutURL="/abcs5/a1.html"/>
<os:cut name="hello3" id="183" cutURL="/abcs6/a3.html"/>
</os:t>
</os:subcat>
</os:cat>
<os:cat name="def" id="2">
<os:subcat name="bcd" id="22">
<os:t name="def" id="222">
<os:cut name="hello" id="171" cutURL="/abcs/a.html"/>
<os:cut name="hello2" id="172" cutURL="/abcs1/a1.html"/>
<os:cut name="hello3" id="173" cutURL="/abcs4/a3.html"/>
</os:t>
</os:subcat>
</os:cat>
</os:tax>
С помощью кого-то из stackoverflow у меня есть работающий LINQ для получения данных из файла, который выглядит так:
XDocument doc = XDocument.Load("tax.xml");
XNamespace os = "http://something"; // You haven't included the declaration...
var query = from cat in doc.Descendants(os + "cat")
from subcat in cat.Elements(os + "subcat")
from t in subcat.Elements(os + "t")
from cut in t.Elements(os + "cut")
select new
{
CatId = (int) cat.Attribute("id"),
CatName = (string) cat.Attribute("name"),
SubCatId = (int) subcat.Attribute("id"),
SubCatName = (string) subcat.Attribute("name"),
TId = (int) t.Attribute("id"),
TName = (string) t.Attribute("name"),
CutId = (int) cut.Attribute("id")
CutName = (string) cut.Attribute("name")
CutUrl = (string) cut.Attribute("cutURL")
};
Может кто-нибудь сказать мне, как я могу сохранить эти данные в базе данных Oracle, используя эту процедуру хранилища:
abc (id in varchar2,
level in varchar2,
title in varchar2,
parent_id in varchar2,
cuturl in varchar2)
id (сохранит все идентификаторы, такие как cat, subcat, t, cut., Затем идентификатор родительского заголовка будет идентификатором выше текущего идентификатора.