Zakładając XML tak:Cofnięcie wartość elementu jako ciąg mimo że zawiera mieszaną zawartość
<my:Root xmlns:my="http://foo/bar">
<my:FieldBasic>content</my:FieldBasic>
<my:FieldComplex>
<html xml:space="preserve" xmlns="http://www.w3.org/1999/xhtml">
<div><h1>content</h1></div>
</html>
</my:FieldComplex>
<my:Root>
i klasę jak:
[Serializable]
[XmlType(AnonymousType = true, Namespace = "http://foo/bar")]
[XmlRoot(ElementName = "Root", Namespace = "http://foo/bar", IsNullable = false)]
public class MyRoot
{
public string FieldBasic { get; set; }
public string FieldComplex { get; set; }
}
Jak deserializowania <my:FieldComplex>
na sznurku w FieldComplex
? Nie powiedzie się, gdy znajdzie kod HTML w środku. Chcę, aby dać mi łańcuch z tej treści:
<html xml:space="preserve" xmlns="http://www.w3.org/1999/xhtml">
<div><h1>content</h1></div>
</html>
Jeśli oświadczam FieldComplex
jak public object FieldComplex
(tj xsd:anyType
) to trochę działa, a ja dostaję XMLNode[]
wewnątrz którego można używać.
Ale muszę FieldComplex
być typu ciąg dla serializacji jak dla serializacji XML nie może zawierać kodu HTML, to będzie tak:
<my:Root xmlns:my="http://foo/bar">
<my:FieldBasic>content</my:FieldBasic>
<my:FieldComplex>content</my:FieldComplex>
<my:Root>
Deklarowanie FieldComplex
jak obiekt będzie wstawić te atrybuty na <my:FieldComplex>
element:
xmlns:q1="http://www.w3.org/2001/XMLSchema" p3:type="q1:string" xmlns:p3="http://www.w3.org/2001/XMLSchema-instance
i nie chcę tego. Nie chcę również używać różnych klas do serializacji i deserializacji.
Czy to możliwe?
Aby długie opowiadanie, to jest możliwe, aby mieć tę klasę:
public class MyRoot
{
public string FieldBasic { get; set; }
public string FielComplex { get; set; }
}
serializacji do tego:
<my:Root xmlns:my="http://foo/bar">
<my:FieldBasic>content</my:FieldBasic>
<my:FieldComplex>content</my:FieldComplex>
<my:Root>
i deserializowania z tego:
<my:Root xmlns:my="http://foo/bar">
<my:FieldBasic>content</my:FieldBasic>
<my:FieldComplex>
<html xml:space="preserve" xmlns="http://www.w3.org/1999/xhtml">
<div><h1>content</h1></div>
</html>
</my:FieldComplex>
<my:Root>
?
P.S. Po prostu wyjaśnić "dlaczego?". Mam czarownicę klasową, która jest serializowana. Serializowany XML przechodzi następnie przez wiele węzłów w aplikacji i ostatecznie wraca, ale zmienia się jak wyżej. Warstwy wykonują pewne sprawdzanie poprawności XML, a dodatkowe atrybuty lub elementy na wejściu nie sprawdzają poprawności i zatrzymują przepływ. Chcę odwzorować zwracany kod XML na tę samą klasę. Zawartość jest tylko struny od jego punktu widzenia, ale oczywiście nie to samo dla serializacji/deserializacji :(
Dziękuję bardzo za to rozwiązanie :). Właśnie tego szukałem. – Beniamin