使用ASP.net和VB.net(或C#)从XML文件编辑和删除数据

时间:2011-11-08 22:51:38

标签: c# asp.net xml vb.net linq-to-xml

在我的 Web应用程序中,我有一个名为“answers.xml”的XML文件

它以XML格式存储用户条目

<?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>

我可以使用从互联网上下载的DLL文件将数据添加到XML文件中。 我需要一种方法来改变xml文件中的数据(编辑/删除),使用ASP.net / VB.net或C#

3 个答案:

答案 0 :(得分:3)

我更喜欢使用XDocument,因为您可以搜索它并更改元素或属性:

XDocument doc1 = XDocument.Parse("<AnswerSet> <Answer questionId=\"10\" FName=\"test\"> </Answer></AnswerSet> ");
// or if you have related file simply use XDocument doc1 = XDocument.Load(fileFullName);
var element =
      doc1.Descendants("AnswerSet").Elements("Answer")
      .Where(x => x.Attribute("FName") != null 
            && x.Attribute("FName").Value == "test").SingleOrDefault();
if (element != null)
{
   var attr = element.Attribute("FName");
   attr.Value = "Changed";
}

doc1.Save(filePath);

编辑: Descendants("AnswerSet")找到AnswerSet元素,Elements(“答案”)找到答案元素,

Where(x => x.Attribute("FName") != null 
            && x.Attribute("FName").Value == "test").SingleOrDefault();

找到包含属性FName且属性值等于test的元素,在最后一个SingleOrDefault,说你应该只有一个这样的元素,你也可以改变它(只是调用ToList())查找所有相关元素,最后在if中我将更改元素的值,最后我们再次使用更改的值保存它。

这种语言(linq2xml)太简单了,像DescendantElements这样的函数最常用的是函数,所以不需要特殊的知识就可以解决很多问题了解这些功能。

答案 1 :(得分:2)

您可以使用.Net附带的XmlDocument类。无需下载任何东西。 或者我会错过什么?

我发现的第一件事是,它适用于VB,但c#的概念保持不变 http://support.microsoft.com/kb/317662

您只需加载任何xml文件,然后使用XPath访问任何节点并进行更改。

答案 2 :(得分:1)

您是否看过XmlDataSource控件。