Редактировать и удалять данные из XML-файла, используя ASP.net и VB.net (или C #) - PullRequest
4 голосов
/ 09 ноября 2011

В моем веб-приложении у меня есть XML-файл с именем "answers.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>

я могу добавить данные в файл XML, используя файл DLL, загруженный из Интернета. Мне нужен способ изменить данные (редактировать / удалить) в XML-файле, используя ASP.net / VB.net или C #

Ответы [ 3 ]

3 голосов
/ 10 ноября 2011

Я предпочитаю использовать 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) слишком прост, и такие функции, как Descendant и Elements, наиболее полно используют в нем полные функции, поэтому нет необходимости иметь специальные знания, вы можете просто решить многие проблемы, зная эти функции. .

2 голосов
/ 10 ноября 2011

Вы можете просто использовать класс XmlDocument, который поставляется с .Net.Не нужно что-то скачивать.Или я что-то пропустил?

Первое, что я нашел, это для VB, но концепция остается неизменной для c #.
http://support.microsoft.com/kb/317662

Вы можете просто загрузить любой файл XML изатем используйте XPath для доступа к любому узлу и измените его.

1 голос
/ 09 ноября 2011

Вы смотрели на XmlDataSource Control.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...