Krótko i treściwie, nie zawsze mamy potrzebę zapisania do pliku lub wczytania z pliku zawartości w formacie Xml. Przykład, ot choćby piszemy prosty czytnik RSS, czy rzeczywiście musimy pobierać plik na dysk? Pobieramy jakieś dane z serwera zewnętrznego w formacie Xml do natychmiastowego przetworzenia czy musimy je zapisywać w pliku Xml, by je przetworzyć ?
XmlReader oraz XmlWriter dostarczają nam gotowego rozwiązania do przetworzenia zawartości Xml, którą posiadamy w zmiennej o typie string lub chcemy by zmienna przechowywała nam ciąg znaków z ów zawartością. Przeciążony konstruktor umożliwia nam takie działanie.
XmlReader
Utworzenie instancji XmlReader na podstawie zmiennej typu string zawierającej tekst w formacie Xml:
string xmlData
= "<?xml version=\"1.0\" encoding=\"utf-8\"?><root><item name=\"salt\" weight=\"10\" /><item name=\"peper\" weight=\"15\" /></root>";
XmlReader herbs
= XmlReader.
Create(new StringReader
(xmlData
));
//.... dalej obrabiamy nasze dane
XmlWriter
Utworzenie obiektu XmlWriter i zapisanie zawartości do zmiennej typu string:
StringBuilder xmlData
= new StringBuilder
(); //utworzenie obiektu StringBuilder, tak abysmy mogli skorzystac z przeciazenia
XmlWriter writer
= XmlWriter.
Create(xmlData
); //utworzenie obiektu XmlWriter
//w tym miejscu wypełniamy nasz xml trescia
writer.
WriteStartDocument();
writer.
WriteStartElement("root");
writer.
WriteStartElement("item");
writer.
WriteAttributeString("name",
"salt");
writer.
WriteAttributeString("unit",
"kg");
writer.
WriteEndElement();
writer.
WriteStartElement("item");
writer.
WriteAttributeString("name",
"peper");
writer.
WriteAttributeString("unit",
"lbs");
writer.
WriteEndElement();
writer.
WriteEndElement();
writer.
WriteEndDocument();
writer.
Flush();
writer.
Close();
//teraz wystraczy tylko skonwertowac xmlData na string
xmlString
= xmlData.
ToString();
Dodaj nową odpowiedź