Ändra noder, innehåll och värden i ett XML-dokument

Det finns många sätt att ändra noderna och innehållet i ett dokument. Du kan:

  • Ändra värdet för noder med hjälp av Value egenskapen .

  • Ändra en hel uppsättning noder genom att ersätta noderna med nya noder. Detta görs med hjälp av InnerXml egenskapen .

  • Ersätt befintliga noder med nya noder med hjälp av RemoveChild metoden .

  • Lägg till ytterligare tecken i noder som ärver från XmlCharacterData klassen med hjälp av AppendDatametoderna , InsertDataeller ReplaceData .

  • Ändra innehållet genom att ta bort ett intervall med tecken med hjälp DeleteData av metoden på nodtyper som ärver från XmlCharacterData.

En enkel teknik för att ändra värdet för en nod är att använda node.Value = "new value";. I följande tabell visas de nodtyper som den här enda kodraden fungerar på och exakt vilka data för den nodtypen som ändras.

Nodtyp Data har ändrats
Attribut Värdet för attributet.
CDATASection Innehållet i CDATASection.
Kommentar Innehållet i kommentaren.
ProcessingInstruction Innehållet, exklusive målet.
Text Innehållet i texten.
XmlDeclaration Innehållet i deklarationen, exklusive pålägget <?xml och ?> .
Tomt utrymme Värdet för det tomma utrymmet. Du kan ange värdet som ett av de fyra identifierade XML-blankstegsteckenen: blanksteg, flik, CR eller LF.
SignificantWhitespace Värdet för det betydande blanksteget. Du kan ange värdet som ett av de fyra identifierade XML-blankstegsteckenen: blanksteg, flik, CR eller LF.

Alla nodtyper som inte visas i tabellen är inte en giltig nodtyp att ange ett värde på. Om du anger ett värde för någon annan nodtyp utlöser en InvalidOperationException.

Egenskapen InnerXml ändrar pålägget för de underordnade noderna för den aktuella noden. Om du anger den här egenskapen ersätts de underordnade noderna med det tolkade innehållet i den angivna strängen. Parsningen görs i den aktuella namnområdeskontexten. Dessutom InnerXml tar bort redundanta namnområdesdeklarationer. Därför ökar inte många åtgärder för klipp ut och klistra in storleken på dokumentet med redundanta namnområdesdeklarationer. Ett kodexempel som visar effekten av namnrymder på åtgärden finns i InnerXmlInnerXml egenskapen .

När du använder ReplaceData metoderna och RemoveChild returnerar metoderna den ersatta eller borttagna noden. Den här noden kan sedan sättas på nytt någon annanstans i XML-dokumentobjektmodellen (DOM). Metoden ReplaceData utför två verifieringskontroller på noden som infogas i dokumentet. Den första kontrollen säkerställer att noden blir underordnad en nod som kan ha underordnade noder av sin typ. Den andra kontrollen säkerställer att noden som infogas inte är en överordnad nod som den blir underordnad. Om du bryter mot något av dessa villkor utlöser en InvalidOperationException.

Det är giltigt att lägga till eller ta bort ett skrivskyddat underordnat objekt från en nod som kan redigeras. Försök att ändra den skrivskyddade noden genererar dock en InvalidOperationException. Ett exempel på detta är att ändra underordnade till en XmlEntityReference nod. Underordnade är skrivskyddade och kan inte ändras. Alla försök att ändra dem genererar en InvalidOperationException.

Se även