如何将XML文件转换为数据源?

4

首先,我想让您知道我以前从未使用过 XML 作为数据源。

我有一个名为"answers.xml"的 XML 文件,需要连接 gridview、formview 等...

<?xml version="1.0"?>
<Answers>  
<AnswerSet>
    <Answer questionId="MRN">4444</Answer> 
    <Answer questionId="FName">test</Answer> 
    <Answer questionId="LName">patient</Answer> 
    <Answer questionId="AddressPt">blah blah</Answer> 
    <Answer questionId="Governorate">xxxx</Answer> 
    <Answer questionId="InitialCSF">Negative</Answer> 
    <Answer questionId="Diagnosis"></Answer> 
    <Answer questionId="Description"> </Answer>   
</AnswerSet>   
<AnswerSet> 
    <Answer questionId="MRN">1</Answer> 
    <Answer questionId="FName">1</Answer> 
    <Answer questionId="LName">1</Answer> 
    <Answer questionId="AddressPt">1</Answer> 
    <Answer questionId="InitialCSF">Positive</Answer> 
    <Answer questionId="Diagnosis">dx</Answer> 
    <Answer questionId="Description"> </Answer>   
</AnswerSet>
</Answers>

我需要一种使用.NET编辑/删除XML文件中数据的方法。


一个建议:使用XML格式,例如<MRN>4444</MRN>而不是<Answer questionId="MRN">4444</Answer> - Dour High Arch
@Dour High Arch:数据输入系统依赖于一个DLL,该DLL将数据输入到XML文件中。我需要编辑/删除已输入的数据。 - Mohamed Kamal
2个回答

3

如果您不想使用 XmlDataSource 控件,也可以使用 LINQ to XML 从文件创建数据源对象:

XDocument doc = XDocument.Load("somefile.xml");

var results = from answer in doc.Descendants("Answer")
              select new
              {
                  Question = answer.Attribute("questionId").Value,
                  Answer = answer.Value
              };

GridView1.DataSource = results;
GridView1.DataBind();

在你的代码中".Load("somefile.xml");",如何在应用程序根目录中加载xml文件? - Mohamed Kamal
1
只需使用Server.MapPath("~/somefile.xml")。 - James Johnson
1
有点复杂。我现在在用手机,但等我有机会时我会包含一个例子。 - James Johnson

2

给定一个XML文件,System.Web.UI.WebControls.XmlDataSource类将返回一个ASP.NET数据源。该链接包含示例代码和操作说明。

请注意,如果您必须使用XML属性作为键,则XPath表达式将包含类似于Answer[@MRN]的内容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接