一个读取xml并绑定gridview的问题
我需要一个xml文档来保存试卷,包括试卷的题目跟答案。如下:
请问各位
1.如何将xml里问题节点的属性读取出来绑定gridview
2.如何将xml里的答案选项节点的属性及其文本信息读取出来并绑定gridview
<?xml version="1.0" encoding="utf-8" ?>
- <ExamPaper Name="我的第一期试卷" BeginDate="2009-3-4" EndDate="2009-12-30" Scort="150" UserTime="100" FK_UserType="1" FK_AdminUser="1">
- <Question PKID="问题编号0" Name="问题内容0" FK_QuestionType="单选题">
<QuestionItem PKID="答案选项编号0" IsRight="0">答案选项内容0</QuestionItem>
<QuestionItem PKID="答案选项编号1" IsRight="0">答案选项内容1</QuestionItem>
<QuestionItem PKID="答案选项编号2" IsRight="0">答案选项内容2</QuestionItem>
<QuestionItem PKID="答案选项编号3" IsRight="0">答案选项内容3</QuestionItem>
<QuestionItem PKID="答案选项编号4" IsRight="0">答案选项内容4</QuestionItem>
</Question>
- <Question PKID="问题编号1" Name="问题内容1" FK_QuestionType="单选题">
<QuestionItem PKID="答案选项编号0" IsRight="0">答案选项内容0</QuestionItem>
<QuestionItem PKID="答案选项编号1" IsRight="0">答案选项内容1</QuestionItem>
<QuestionItem PKID="答案选项编号2" IsRight="0">答案选项内容2</QuestionItem>
<QuestionItem PKID="答案选项编号3" IsRight="0">答案选项内容3</QuestionItem>
<QuestionItem PKID="答案选项编号4" IsRight="0">答案选项内容4</QuestionItem>
</Question>
- <Question PKID="问题编号2" Name="问题内容2" FK_QuestionType="单选题">
<QuestionItem PKID="答案选项编号0" IsRight="0">答案选项内容0</QuestionItem>
<QuestionItem PKID="答案选项编号1" IsRight="0">答案选项内容1</QuestionItem>
<QuestionItem PKID="答案选项编号2" IsRight="0">答案选项内容2</QuestionItem>
<QuestionItem PKID="答案选项编号3" IsRight="0">答案选项内容3</QuestionItem>
<QuestionItem PKID="答案选项编号4" IsRight="0">答案选项内容4</QuestionItem>
</Question>
- <Question PKID="问题编号3" Name="问题内容3" FK_QuestionType="单选题">
<QuestionItem PKID="答案选项编号0" IsRight="0">答案选项内容0</QuestionItem>
<QuestionItem PKID="答案选项编号1" IsRight="0">答案选项内容1</QuestionItem>
<QuestionItem PKID="答案选项编号2" IsRight="0">答案选项内容2</QuestionItem>
<QuestionItem PKID="答案选项编号3" IsRight="0">答案选项内容3</QuestionItem>
<QuestionItem PKID="答案选项编号4" IsRight="0">答案选项内容4</QuestionItem>
</Question>
- <Question PKID="问题编号4" Name="问题内容4" FK_QuestionType="单选题">
<QuestionItem PKID="答案选项编号0" IsRight="0">答案选项内容0</QuestionItem>
<QuestionItem PKID="答案选项编号1" IsRight="0">答案选项内容1</QuestionItem>
<QuestionItem PKID="答案选项编号2" IsRight="0">答案选项内容2</QuestionItem>
<QuestionItem PKID="答案选项编号3" IsRight="0">答案选项内容3</QuestionItem>
<QuestionItem PKID="答案选项编号4" IsRight="0">答案选项内容4</QuestionItem>
</Question>
</ExamPaper>
------解决方案--------------------
应用XmlDataSource
<?xml version="1.0" encoding="gb2312"?><bookstore> <book ISBN="2-3631-1"> <title>Oberon's Legacy1 </title> </book> <book ISBN="2-3631-2"> <title>Oberon's Legacy2 </title> </book> <book ISBN="2-3631-3"> <title>Oberon's Legacy3 </title> </book> <book ISBN="2-3631-4"> <title>Oberon's Legacy4 </title> </book> <book ISBN="2-3631-5"> <title>Oberon's Legacy5 </title> </book> <book ISBN="2-3631-6"> <title>Oberon's Legacy6 </title> </book> <book ISBN="2-3631-7"> <title>Oberon's Legacy7 </title> </book> <book ISBN="2-3631-8"> <title>Oberon's Legacy8 </title> </book></bookstore>
[解决办法]
主要就是Xpath语法,自己改一下
<asp:GridView runat="server" ID="gridView1" AutoGenerateColumns="false" DataSourceID="XmlDataSource1"> <Columns> <asp:TemplateField HeaderText="ISBN"> <ItemTemplate> <%# XPath("@ISBN")%> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Title"> <ItemTemplate> <%# XPath("title")%> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> <asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="test.xml" XPath="//book" ></asp:XmlDataSource>
[解决办法]
protected void Page_Load(object sender, EventArgs e){ if (!IsPostBack) { DataSet ds = new DataSet(); ds.ReadXml(Server.MapPath("~/help.xml")); GridView1.DataSource = ds; GridView1.DataBind(); }}
[解决办法]
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("~/help.xml"));
GridView1.DataSource = ds;
GridView1.DataBind();
}
}
[解决办法]
下面是显示题目,如果要显示选项就要嵌套了GridView了
<asp:GridView runat="server" ID="gridView1" AutoGenerateColumns="false" DataSourceID="XmlDataSource1"> <Columns> <asp:TemplateField HeaderText="试题编号"> <ItemTemplate> <%# XPath("@PKID")%> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="试题内容"> <ItemTemplate> <%# XPath("@Name")%> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> <asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="test.xml" XPath="//Question[@FK_QuestionType='单选题']" ></asp:XmlDataSource>
------解决方案--------------------
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <title>Untitled Page</title></head><body> <form id="form1" runat="server"> <div> </div> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="XmlDataSource1"> <Columns> <asp:BoundField DataField="PKID" HeaderText="PKID" SortExpression="PKID" /> <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" /> <asp:BoundField DataField="FK_QuestionType" HeaderText="FK_QuestionType" SortExpression="FK_QuestionType" /> </Columns> </asp:GridView> <asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="~/XMLFile.xml" XPath = "//*[@FK_QuestionType='单选题']" > </asp:XmlDataSource> </form></body></html>
[解决办法]
<?xml version="1.0" encoding="utf-8" ?>
<ExamPaper Name="我的第一期试卷" BeginDate="2009-3-4" EndDate="2009-12-30" Scort="150" UserTime="100" FK_UserType="1" FK_AdminUser="1">
<Question PKID="问题编号0" Name="问题内容0" FK_QuestionType="单选题">
<QuestionItem PKID="答案选项编号0" IsRight="0">答案选项内容0 </QuestionItem>
<QuestionItem PKID="答案选项编号1" IsRight="0">答案选项内容1 </QuestionItem>
<QuestionItem PKID="答案选项编号2" IsRight="0">答案选项内容2 </QuestionItem>
<QuestionItem PKID="答案选项编号3" IsRight="0">答案选项内容3 </QuestionItem>
<QuestionItem PKID="答案选项编号4" IsRight="0">答案选项内容4 </QuestionItem>
</Question>
<Question PKID="问题编号1" Name="问题内容1" FK_QuestionType="多选题">
<QuestionItem PKID="答案选项编号0" IsRight="0">答案选项内容0 </QuestionItem>
<QuestionItem PKID="答案选项编号1" IsRight="0">答案选项内容1 </QuestionItem>
<QuestionItem PKID="答案选项编号2" IsRight="0">答案选项内容2 </QuestionItem>
<QuestionItem PKID="答案选项编号3" IsRight="0">答案选项内容3 </QuestionItem>
<QuestionItem PKID="答案选项编号4" IsRight="0">答案选项内容4 </QuestionItem>
</Question>
<Question PKID="问题编号2" Name="问题内容2" FK_QuestionType="单选题">
<QuestionItem PKID="答案选项编号0" IsRight="0">答案选项内容0 </QuestionItem>
<QuestionItem PKID="答案选项编号1" IsRight="0">答案选项内容1 </QuestionItem>
<QuestionItem PKID="答案选项编号2" IsRight="0">答案选项内容2 </QuestionItem>
<QuestionItem PKID="答案选项编号3" IsRight="0">答案选项内容3 </QuestionItem>
<QuestionItem PKID="答案选项编号4" IsRight="0">答案选项内容4 </QuestionItem>
</Question>
<Question PKID="问题编号3" Name="问题内容3" FK_QuestionType="多选题">
<QuestionItem PKID="答案选项编号0" IsRight="0">答案选项内容0 </QuestionItem>
<QuestionItem PKID="答案选项编号1" IsRight="0">答案选项内容1 </QuestionItem>
<QuestionItem PKID="答案选项编号2" IsRight="0">答案选项内容2 </QuestionItem>
<QuestionItem PKID="答案选项编号3" IsRight="0">答案选项内容3 </QuestionItem>
<QuestionItem PKID="答案选项编号4" IsRight="0">答案选项内容4 </QuestionItem>
</Question>
<Question PKID="问题编号4" Name="问题内容4" FK_QuestionType="单选题">
<QuestionItem PKID="答案选项编号0" IsRight="0">答案选项内容0 </QuestionItem>
<QuestionItem PKID="答案选项编号1" IsRight="0">答案选项内容1 </QuestionItem>
<QuestionItem PKID="答案选项编号2" IsRight="0">答案选项内容2 </QuestionItem>
<QuestionItem PKID="答案选项编号3" IsRight="0">答案选项内容3 </QuestionItem>
<QuestionItem PKID="答案选项编号4" IsRight="0">答案选项内容4 </QuestionItem>
</Question>
</ExamPaper>
[解决办法]
http://www.cnblogs.com/JaggerLee/archive/2009/02/04/1384062.html