Ä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 med hjälp av DeleteData-metoden ta bort ett intervall med tecken 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
Egenskap Värdet för attributet.
CDATASection Innehållet i CDATASection.
Kommentar Innehållet i kommentaren.
bearbetningsinstruktion Innehållet, exklusive målet.
SMS Innehållet i texten.
XML-deklaration Innehållet i deklarationen, exklusive pålägget <?xml och ?> .
Blanksteg 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å. Att ange ett värde för någon annan nodtyp resulterar i en InvalidOperationException.

Egenskapen InnerXml ändrar markeringen för de underordnade noderna för den aktuella noden. Genom att ange den här egenskapen ersätts de underordnade noderna med det analyserade 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 klipp-och-klistra-åtgärder storleken på dokumentet med redundanta namnområdesdeklarationer. För ett kodexempel som visar effekten av namnrymder på InnerXml operationen, se InnerXml-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 ett barn till en nod som kan ha barnnoder av dess typ. Den andra kontrollen säkerställer att noden som infogas inte är en förfader till noden den blir ett barn av. Om du bryter mot något av dessa villkor kastas ett InvalidOperationException.

Det är giltigt att lägga till eller ta bort en endast läsbar barnnod 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 barnnoder om en XmlEntityReference-nod. Barn är skrivskyddade och kan inte ändras. Alla försök att ändra dem genererar en InvalidOperationException.

Se även