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
false
dla 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); };