Jeśli masz zainstalowany zestaw Podgląd WCF Rest Starter, tam miłe trick:
- otwarty Visual Studio
- wybrać swoje zawartość węzła XML (XML, który stanowi jeden z węzłów) i skopiować go do schowka
- z menu „Edycja” w Visual Studio, wybierz „Wklej XML jako typy”
to wkleić swój XML, który znajduje się w schowku w projekcie jako klasa C#, który jest zdolne do deserializacji dokładnie tego XML. Całkiem fajne!
Zobacz te blogu o tym:
To powinno zaoszczędzić dużo pisania i uczynić życie dużo łatwiejsze!
UPDATE:
OK, masz już swoje klasy wygenerowane z XML wrócisz. Teraz musisz przekonwertować klasę na XmlNode
.
Musisz zrobić coś takiego:
private static T ConvertNode<T>(XmlNode node) where T: class
{
MemoryStream stm = new MemoryStream();
StreamWriter stw = new StreamWriter(stm);
stw.Write(node.OuterXml);
stw.Flush();
stm.Position = 0;
XmlSerializer ser = new XmlSerializer(typeof(T));
T result = (ser.Deserialize(stm) as T);
return result;
}
Musisz napisać reprezentacji XML (właściwość .OuterXml
) z XmlNode
do strumienia (tutaj MemoryStream
), a następnie użyć XmlSerializer
do serializacji cofnij obiekt z tego strumienia.
Można to zrobić za pomocą metody rodzajowe i nazywają
Customer myCustomer = ConvertNode<Customer>(xmlNode);
lub można nawet włączyć ten kod w obu metodę rozszerzenia na klasy XmlNode
więc można napisać:
Customer myCustomer = xmlNode.ConvertNode<Customer>();
Marc
Witam, już mam obiekty z xsd, więc naprawdę nie muszę robić tego kroku. Chcę dowiedzieć się, jaki jest najlepszy sposób, aby przejść z xmlNodes [] (serialized object). – 76mel