我發現很難解析下面的xml結構(使用c#.net 4.5)並存儲在數據庫(Sql-Server)中。用多個元素解析XML
我知道如何解析,只要每個記錄有一個屬性,例如出版商;日期(年份),但從作者內部的結構看,有不止一個,這是我掙扎的地方。
我使用XmlNodeList,XmlNode和InnerText從每個元素中提取數據。
欣賞你的時間和幫助
XML結構
<Books>
<Book>
<title></title>
<date>
<year></year>
</date>
<Link></link>
<summary></summary>
<publisher>
<name></name>
</publisher>
<authors total="2">
<author>
<name></name>
</author>
<author>
<name></name>
</author>
</authors>
</Book>
</Books>
我現在已經連接,我使用不同的(因爲有不同於其他多個屬性的話)的正常工作的代碼
XmlDocument xml = new XmlDocument();
xml.LoadXml(/*Here I pass the xml which has been stored in string variable. The structure of which has been in my original post*/);
XmlNodeList xnList = xml.SelectNodes("/Books[@*]");
foreach (XmlNode xn in xnList)
{
XmlNodeList anodes = xn.SelectNodes("Book");
foreach (XmlNode node in anodes)
{
if (anodes != null)
{
titles.Add(node["title"].InnerText); //titles is an list
summarys.Add(node["summary"].InnerText);//Summarys is an list
link.Add(node["Link"].InnerText);//link is an list
counter +=1;
}
}
XmlNodeList CNodes = xn.SelectNodes("Book");
foreach (XmlNode node2 in CNodes)
{
XmlNode example = node2.SelectSingleNode("date");
if (example != null)
{
years.Add(example["year"].InnerText);//years is an list
}
}
XmlNodeList dNodes = xn.SelectNodes("Book");
foreach (XmlNode node3 in dNodes)
{
XmlNode example1 = node3.SelectSingleNode("publisher");
if (example1 != null)
{
publishers.Add(example1["name"].InnerText);//publishers is an list
}
}
XmlNodeList fnodes = xn.SelectNodes("Book/authors/author/name");
foreach (XmlNode node5 in fnodes)
{
authors.Add(node5 != null ? node5.InnerText : "");//authors is an list. For the first book i need to store in list[0] and next in list[1]
}
}
// Convert list to array
titles.ToArray();
summarys.ToArray();
urls.ToArray();
years.ToArray();
publishers.ToArray();
authors.ToArray();
「*這是我很努力*」 你怎麼努力下?你能否向我們展示一段代碼,以便我們瞭解哪些事情不適合你? – JDB