XMLSerializer#
XMLSerializer.serializeToString()#
Metoda serializeToString() pozwala zserializować przekazany węzła (i wszystkich jego potomków) do postaci łańcucha znakowego, zgodnie z wymogami serializacji XML.
Opis działania#
Samo wywołanie i poszczególne jego części najlepiej objaśnić na zapisie składniowym:
var serialize_str = xmlSerializer.serializeToString(root);gdzie poszczególne człony oznaczają:
- serialize_str - łańcuch znakowy zwracany w wyniku serializacji.
- xmlSerializer - serializer XML będący obiektem kontekstu.
- root - węzeł od którego proces serializacji zostaje rozpoczęty (procesowi podlegają także wszyscy jego potomkowie).
Algorytm wywołania metody serializeToString(root) nie jest skomplikowany. Dla lepszego zrozumienia tematu prezentuję go w całości:
- Wykonaj produkcję serializacji XML na root z przekazaniem boolowskiej wartości
falsedla flagi wymaganego dobrego sformułowania i zwróć jej rezultat.
Metoda serializeToString() może być wywoływana także z poziomu dokumentów HTML. Trzeba mieć jednak na uwadze, że zwracany łańcuch znakowy jest zgodny z wymogami serializacji XML, aczkolwiek bez sprawdzania dobrego sformułowania (szczegóły). Istnieją osobne algorytmy przeznaczone wyłącznie do serializacji HTML, ale będą wykorzystywane przez inne polecenia (np. właściwości Element.innerHTML lub Element.outerHTML).
Prosty przykład:
<script>
// Tworzymy nowy serializer XML
var serializer = new XMLSerializer();
alert(serializer.serializeToString(document)); // Zależne od przeglądarki
</script>Metoda serializeToString() jest obsługiwana przez wszystkie aktualne przeglądarki internetowe, chociaż mogą wystąpić drobne różnice w zwracanych wynikach. Największe rozbieżności będą dotyczyły ustalania prawidłowych prefiksów oraz przestrzeni nazw w elementach i ich atrybutach. Ustalenie właściwego działania do najłatwiejszych nie należy, całość opisywana jest w aż trzech specyfikacjach, poza tym sami programiści bardzo rzadko sięgają po tego typu polecenia.
Składnia Web IDL#
interface XMLSerializer { DOMString serializeToString(Node root); };