Modyfikowanie węzłów, zawartości i wartości w dokumencie XML
Istnieje wiele sposobów modyfikowania węzłów i zawartości w dokumencie. Masz następujące możliwości:
Zmień wartość węzłów przy użyciu Value właściwości .
Zmodyfikuj cały zestaw węzłów, zastępując węzły nowymi węzłami. Odbywa się to przy użyciu InnerXml właściwości .
Zastąp istniejące węzły nowymi węzłami przy użyciu RemoveChild metody .
Dodaj dodatkowe znaki do węzłów, które dziedziczą z XmlCharacterData klasy przy użyciu AppendDatametod , InsertDatalub ReplaceData .
Zmodyfikuj zawartość, usuwając zakres znaków przy użyciu DeleteData metody w typach węzłów, które dziedziczą z XmlCharacterDataklasy .
Prostą techniką zmiany wartości węzła jest użycie metody node.Value = "new value";
. W poniższej tabeli wymieniono typy węzłów, na których działa ten pojedynczy wiersz kodu i jakie dane dla tego typu węzła są zmieniane.
Typ węzła | Zmieniono dane |
---|---|
Atrybut | Wartość atrybutu. |
CDATASection | Zawartość CDATASection. |
Komentarz | Zawartość komentarza. |
ProcessingInstruction | Zawartość, z wyłączeniem obiektu docelowego. |
Text | Zawartość tekstu. |
XmlDeclaration | Zawartość deklaracji, z wyłączeniem <?xml znaczników i ?> . |
Whitespace | Wartość odstępu. Można ustawić wartość na jedną z czterech rozpoznanych znaków białych znaków XML: spacji, karty, CR lub LF. |
ZnacząceWhitespace | Wartość znaczącego odstępu. Można ustawić wartość na jedną z czterech rozpoznanych znaków białych znaków XML: spacji, karty, CR lub LF. |
Każdy typ węzła, którego nie ma na liście w tabeli, nie jest prawidłowym typem węzła do ustawienia wartości. Ustawienie wartości dla dowolnego innego typu węzła zgłasza błąd InvalidOperationException.
Właściwość InnerXml zmienia znaczniki węzłów podrzędnych dla bieżącego węzła. Ustawienie tej właściwości zastępuje węzły podrzędne analizowaną zawartością danego ciągu. Analizowanie odbywa się w bieżącym kontekście przestrzeni nazw. Ponadto InnerXml usuwa nadmiarowe deklaracje przestrzeni nazw. W związku z tym liczne operacje wycinania i wklejania nie zwiększają rozmiaru dokumentu przy użyciu nadmiarowych deklaracji przestrzeni nazw. Aby zapoznać się z przykładem kodu pokazującym wpływ przestrzeni nazw na operację InnerXmlInnerXml , zobacz właściwość .
W przypadku używania ReplaceData metod i RemoveChild metody zwracają zastąpiony lub usunięty węzeł. Ten węzeł można następnie ponownie przestawić w innym miejscu w modelu obiektów dokumentów XML (DOM). Metoda ReplaceData wykonuje dwie kontrole poprawności w węźle wstawionym do dokumentu. Pierwsze sprawdzenie gwarantuje, że węzeł staje się elementem podrzędnym węzła, który może mieć węzły podrzędne tego typu. Drugie sprawdzenie gwarantuje, że wstawiony węzeł nie jest elementem nadrzędnym węzła, którego elementem podrzędnym jest. Naruszenie jednego z tych warunków zgłasza błąd InvalidOperationException.
Prawidłowe jest dodanie lub usunięcie elementu podrzędnego tylko do odczytu z węzła, który można edytować. Jednak próba zmodyfikowania samego węzła tylko do odczytu zgłasza błąd InvalidOperationException. Przykładem jest modyfikowanie elementów podrzędnych węzła XmlEntityReference . Elementy podrzędne są tylko do odczytu i nie można ich modyfikować. Każda próba ich zmodyfikowania zgłasza błąd InvalidOperationException.