Я согласен с Яном Тома. То, что вы делаете, называется десериализацией (когда вы создаете xml или json из объекта, вы делаете сериализацию). Таким образом, вы просто создаете объект из файла xml (конечно, технически вам нужно прочитать файл, чтобы десериализовать его, но, конечно, вы используете библиотеку для его обработки). Получив данные, вы сможете изменить свой объект или создать измененную копию с правильными данными.
Обычно я предпочитаю json, поэтому я не уверен, как это сделать с библиотекой XmlSerializer (ссылка с примером в части редактирования), но вы должны создать объект bean, представляющий ваш файл xml (пример antwort - один из объектов basi c, и он должен иметь переменную int info и логическую переменную korrekt , в то время как antworten - это объект, который содержит только список antwort и т. д., пока вы не достигнете своего основного объекта fragen, который содержит все ваши базовые представления вашего компонента xml для десериализации (для создания компонента просто объявите свои переменные и Getter / Setters для этих переменных))
После этого вы просто десериализуете ваш xml как Fragen, а не как тип данных, и вы можете легко изменить свой объект.
EDIT , Чтобы понять это лучше, просто посмотрите пример здесь: https://docs.microsoft.com/it-it/dotnet/api/system.xml.serialization.xmlserializer.deserialize?view=netframework-4.8
вы получили xml и класс, который представляет объект OrderedItem (примечание: пространство имен должно быть необязательным, но вам нужно чтобы вызвать переменную с тем же именем переменной в вашем xml, и вам понадобятся getter и setter в классе OrderedItem). После того, как вы получили элемент OrderedItem, вы легко можете прочитать / записать новое значение для объекта, сериализовать новый xml с новыми данными или просто создать измененную копию вашего объекта. Вы должны просто сделать то же самое.
Пример по ссылке:
using System;
using System.IO;
using System.Xml.Serialization;
// This is the class that will be deserialized.
public class OrderedItem
{
[XmlElement(Namespace = "http://www.cpandl.com")]
public string ItemName;
[XmlElement(Namespace = "http://www.cpandl.com")]
public string Description;
[XmlElement(Namespace="http://www.cohowinery.com")]
public decimal UnitPrice;
[XmlElement(Namespace = "http://www.cpandl.com")]
public int Quantity;
[XmlElement(Namespace="http://www.cohowinery.com")]
public decimal LineTotal;
// A custom method used to calculate price per item.
public void Calculate()
{
LineTotal = UnitPrice * Quantity;
}
}
public class Test
{
public static void Main()
{
Test t = new Test();
// Read a purchase order.
t.DeserializeObject("simple.xml");
}
private void DeserializeObject(string filename)
{
Console.WriteLine("Reading with Stream");
// Create an instance of the XmlSerializer.
XmlSerializer serializer =
new XmlSerializer(typeof(OrderedItem));
// Declare an object variable of the type to be deserialized.
OrderedItem i;
using (Stream reader = new FileStream(filename, FileMode.Open))
{
// Call the Deserialize method to restore the object's state.
i = (OrderedItem)serializer.Deserialize(reader);
}
// Write out the properties of the object.
Console.Write(
i.ItemName + "\t" +
i.Description + "\t" +
i.UnitPrice + "\t" +
i.Quantity + "\t" +
i.LineTotal);
}
}
xml
<?xml version="1.0"?>
<OrderedItem xmlns:inventory="http://www.cpandl.com" xmlns:money="http://www.cohowinery.com">
<inventory:ItemName>Widget</inventory:ItemName>
<inventory:Description>Regular Widget</inventory:Description>
<money:UnitPrice>2.3</money:UnitPrice>
<inventory:Quantity>10</inventory:Quantity>
<money:LineTotal>23</money:LineTotal>
</OrderedItem>