我有一个带有有趣格式的XML文档,我似乎无法进入数据集。
<?xml version="1.0"?>
<mysqldump xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<database name="magento">
<table_structure name="cignex_faq">
<field Field="faq_id" Type="int(10) unsigned" Null="NO" Key="PRI" Extra="auto_increment" />
<field Field="title" Type="varchar(255)" Null="NO" Key="" Default="" Extra="" />
<field Field="meta_keywords" Type="text" Null="NO" Key="" Extra="" />
<field Field="meta_description" Type="text" Null="NO" Key="" Extra="" />
<field Field="faqcontent" Type="text" Null="NO" Key="" Extra="" />
<field Field="creation_time" Type="datetime" Null="YES" Key="" Extra="" />
<field Field="update_time" Type="datetime" Null="YES" Key="" Extra="" />
<field Field="status" Type="tinyint(1)" Null="NO" Key="" Default="0" Extra="" />
<field Field="category_ids" Type="text" Null="YES" Key="" Extra="" />
<field Field="faqrelease_date" Type="datetime" Null="YES" Key="" Extra="" />
<key Table="cignex_faq" Non_unique="0" Key_name="PRIMARY" Seq_in_index="1" Column_name="faq_id" Collation="A" Cardinality="267" Null="" Index_type="BTREE" Comment="" />
<options Name="cignex_faq" Engine="InnoDB" Version="10" Row_format="Compact" Rows="276" Avg_row_length="1365" Data_length="376832" Max_data_length="0" Index_length="0" Data_free="0" Auto_increment="323" Create_time="2011-09-12 16:38:02" Collation="utf8_general_ci" Create_options="" Comment="InnoDB free: 1639424 kB" />
</table_structure>
<table_data name="cignex_faq">
<row>
<field name="faq_id">20</field>
<field name="title">foo</field>
<field name="meta_keywords"></field>
<field name="meta_description"></field>
<field name="faqcontent">foo</field>
<field name="creation_time">2010-08-13 21:41:51</field>
<field name="update_time">2011-10-06 18:52:48</field>
<field name="status">1</field>
<field name="category_ids"></field>
<field name="faqrelease_date">2010-08-13 00:00:00</field>
</row>
<row>
<field name="faq_id">21</field>
<field name="title">foo</field>
<field name="meta_keywords"></field>
<field name="meta_description"></field>
<field name="faqcontent">foo</field>
<field name="creation_time">2010-08-16 20:58:24</field>
<field name="update_time">2011-10-06 18:52:11</field>
<field name="status">1</field>
<field name="category_ids"></field>
<field name="faqrelease_date">2010-08-16 00:00:00</field>
</row>
</table_data>
</database>
</mysqldump>
以前,这很好用:
DataSet dsFaq;
String filePath = Server.MapPath("RU_xml_faq_101311.xml");
dsFaq = new DataSet();
dsFaq.ReadXml(filePath);
foreach (DataRowView r in dvFaq) {
Response.Write("Importing " + r["title"].ToString() + "<br>");
}
但是这个文件的格式与我以前不一样。关于我可以用什么ReadXML代码来正确读取这些内容的任何建议?
答案 0 :(得分:1)
您发布的XML永远不会进入DataSet。
DataSet类是关系数据库的内存表示,包含表,以及它们之间的关系。这个新的XML以任何方式都与该模型不匹配。
非常简短,部分例子:
XDocument doc = XDocument.Load(fileName);
var rows = from row in doc.Root.Element("database").Element("table_data").Elements("row")
let fields = row.Elements("field")
select new
{
FaqId = fields.Where(element => element.Attribute("name").Value == "faq_id").First().Value,
Title = fields.Where(element => element.Attribute("name").Value == "title").First().Value,
// etc.
};
略微漂亮。您已添加using System.Xml.Xpath;
var rows =
from row in
doc.Root.Element("database").Element(
"table_data").Elements("row")
select
new
{
FaqId =row.XPathSelectElement("field[@name='faq_id']").Value,
Title = row.XPathSelectElement("field[@name='title']").Value,
// etc.
};
答案 1 :(得分:0)
我确信XmlDocument会帮助您阅读此xml。