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

使用ASP.net和VB.net(或C#)编辑和删除XML文件中的数据,c#,asp.net,xml,vb.net,linq-to-xml,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=

在我的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>

4444
试验
病人
废话
xxxx
消极的
1.
1.
1.
1.
肯定的
dx
我可以使用从internet下载的DLL文件将数据添加到XML文件中。
我需要一种方法来使用ASP.net/VB.net或C#更改xml文件中的数据(编辑/删除)。您看过该控件了吗。

您可以使用.net附带的XmlDocument类。不需要下载东西。 还是我错过了什么

我发现的第一件事是,它适用于VB,但c#的概念保持不变。

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

我更喜欢使用,因为您只需搜索并更改元素或属性即可:

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);
查找包含属性
FName
且属性值等于
test
SingleOrDefault
的元素,最后说您应该只有一个这样的元素,您也可以更改它(只需调用
ToList()
)来查找所有相关元素,最后在
中如果
我将更改元素的值,最后,我们用更改的值再次保存它


这种语言(linq2xml)太简单了,像
genderant
Elements
这样的函数是其中使用最多的完整函数,因此不需要有专门的知识,只要知道这些函数,你就可以遇到很多问题。

我以前从未将xml用于数据存储,所以,请耐心地告诉我更多细节,我没有提及,因为它非常简单,正如你们所看到的,它由MSDN记录。谢谢@Saeed Amiri投票支持。但是u提出了一个解决方案,它可以使用固定的字段名。普通用户如果需要添加一个新字段,就什么都做不了,对吗?我正在考虑一个解决方案,将所有字段加载到gridview中,然后进行编辑和更新。每当我们添加一个新字段时,它都会在gridview中填充,而无需修改代码。@XML中的mokokamello编辑元素与编辑gridview不同,事实上,您可以在gridview中加载XML,只需将字段值放入列表,但此代码与更新或编辑不同,因为您的类应该尽可能多地彼此分离,特别是您的保存或业务方式应该隐藏在UI实现中,如果第二天您想将其移动到silver light,那么您应该再次编写代码,这称为关注点分离规则。此外,这可能是动态的,对许多领域都有影响,但我不想让它引起混淆。感谢@Saeed Amiri,我从u了解到,在XML文件中编辑它非常困难,或者它是可行的。请帮助我:)@mokokamello首先阅读一些关于linq的内容并不困难(例如google 101 linq示例,并对其进行测试),然后您可以简单地处理您的所有需求,然后如果您有问题,我们会在这里帮助您,我写这个答案是为了向您介绍,
DOM
SAX
是处理xml的其他选项,但它们很旧,最好使用
XDocument
Where(x => x.Attribute("FName") != null 
            && x.Attribute("FName").Value == "test").SingleOrDefault();