Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A XPathNavigator classe fornece um conjunto de métodos usados para inserir nós irmãos, filhos e atributos em um documento XML. Para usar esses métodos, o XPathNavigator objeto deve ser editável, ou seja, sua CanEdit propriedade deve ser true.
XPathNavigator os objetos que podem editar um documento XML são criados pelo CreateNavigator método da XmlDocument classe. XPathNavigator objetos criados pela classe XPathDocument são somente de leitura e qualquer tentativa de usar os métodos de edição de um objeto XPathNavigator criado por um objeto XPathDocument resulta em um NotSupportedException.
Para obter mais informações sobre como criar objetos editáveis XPathNavigator , consulte Ler dados XML usando XPathDocument e XmlDocument.
Inserindo nós
A XPathNavigator classe fornece métodos para inserir nós irmão, filho e atributo em um documento XML. Esses métodos permitem inserir nós e atributos em locais diferentes em relação à posição atual de um XPathNavigator objeto e são descritos nas seções a seguir.
Inserindo nós irmãos
A classe XPathNavigator fornece os seguintes métodos para inserir nós adjacentes.
Esses métodos inserem nós irmãos antes e depois do nó em que um XPathNavigator objeto está posicionado no momento.
Os métodos InsertAfter e InsertBefore são sobrecarregados e aceitam um objeto string, um objeto XmlReader ou um objeto XPathNavigator que contém o nó irmão a ser adicionado, como parâmetros. Ambos os métodos também retornam um objeto XmlWriter usado para inserir nós irmãos.
Os métodos InsertElementAfter e InsertElementBefore inserem um único nó irmão antes e depois do nó em que um objeto XPathNavigator está atualmente posicionado, usando o prefixo do namespace, o nome local, o URI do namespace e o valor especificados como parâmetros.
No exemplo a seguir, um novo pages elemento é inserido antes do price elemento filho do primeiro book elemento no contosoBooks.xml arquivo.
XmlDocument document = new XmlDocument();
document.Load("contosoBooks.xml");
XPathNavigator navigator = document.CreateNavigator();
navigator.MoveToChild("bookstore", "http://www.contoso.com/books");
navigator.MoveToChild("book", "http://www.contoso.com/books");
navigator.MoveToChild("price", "http://www.contoso.com/books");
navigator.InsertBefore("<pages>100</pages>");
navigator.MoveToParent();
Console.WriteLine(navigator.OuterXml);
Dim document As XmlDocument = New XmlDocument()
document.Load("contosoBooks.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()
navigator.MoveToChild("bookstore", "http://www.contoso.com/books")
navigator.MoveToChild("book", "http://www.contoso.com/books")
navigator.MoveToChild("price", "http://www.contoso.com/books")
navigator.InsertBefore("<pages>100</pages>")
navigator.MoveToParent()
Console.WriteLine(navigator.OuterXml)
O exemplo usa o contosoBooks.xml arquivo como uma entrada.
<?xml version="1.0" encoding="utf-8" ?>
<bookstore xmlns="http://www.contoso.com/books">
<book genre="autobiography" publicationdate="1981-03-22" ISBN="1-861003-11-0">
<title>The Autobiography of Benjamin Franklin</title>
<author>
<first-name>Benjamin</first-name>
<last-name>Franklin</last-name>
</author>
<price>8.99</price>
</book>
<book genre="novel" publicationdate="1967-11-17" ISBN="0-201-63361-2">
<title>The Confidence Man</title>
<author>
<first-name>Herman</first-name>
<last-name>Melville</last-name>
</author>
<price>11.99</price>
</book>
<book genre="philosophy" publicationdate="1991-02-15" ISBN="1-861001-57-6">
<title>The Gorgias</title>
<author>
<name>Plato</name>
</author>
<price>9.99</price>
</book>
</bookstore>
Para obter mais informações sobre os métodos InsertAfter, InsertBefore, InsertElementAfter e InsertElementBefore, consulte a documentação de referência da classe XPathNavigator.
Inserindo nós filhos
A XPathNavigator classe fornece os métodos a seguir para inserir nós filhos.
Esses métodos adicionam e antecedem nós filhos ao final e ao início da lista de nós filhos do nó em que um objeto XPathNavigator está posicionado no momento.
Como os métodos na seção "Inserir Nós Irmãos", os métodos AppendChild e PrependChild aceitam um string, XmlReader objeto ou XPathNavigator objeto que contém o nó filho a ser adicionado como parâmetro. Ambos os métodos também retornam um XmlWriter objeto usado para inserir nós filho.
Assim como os métodos na seção "Inserir nós irmãos", os métodos AppendChildElement e PrependChildElement inserem um único nó filho no final e no início da lista de nós filhos do nó em que um objeto XPathNavigator está posicionado no momento, usando o prefixo do namespace, o nome local, o URI do namespace e o valor especificados como parâmetros.
No exemplo a seguir, um elemento filho pages novo é acrescentado à lista de elementos filho do primeiro elemento book no arquivo contosoBooks.xml.
XmlDocument document = new XmlDocument();
document.Load("contosoBooks.xml");
XPathNavigator navigator = document.CreateNavigator();
navigator.MoveToChild("bookstore", "http://www.contoso.com/books");
navigator.MoveToChild("book", "http://www.contoso.com/books");
navigator.AppendChild("<pages>100</pages>");
Console.WriteLine(navigator.OuterXml);
Dim document As XmlDocument = New XmlDocument()
document.Load("contosoBooks.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()
navigator.MoveToChild("bookstore", "http://www.contoso.com/books")
navigator.MoveToChild("book", "http://www.contoso.com/books")
navigator.AppendChild("<pages>100</pages>")
Console.WriteLine(navigator.OuterXml)
O exemplo usa o contosoBooks.xml arquivo como uma entrada.
<?xml version="1.0" encoding="utf-8" ?>
<bookstore xmlns="http://www.contoso.com/books">
<book genre="autobiography" publicationdate="1981-03-22" ISBN="1-861003-11-0">
<title>The Autobiography of Benjamin Franklin</title>
<author>
<first-name>Benjamin</first-name>
<last-name>Franklin</last-name>
</author>
<price>8.99</price>
</book>
<book genre="novel" publicationdate="1967-11-17" ISBN="0-201-63361-2">
<title>The Confidence Man</title>
<author>
<first-name>Herman</first-name>
<last-name>Melville</last-name>
</author>
<price>11.99</price>
</book>
<book genre="philosophy" publicationdate="1991-02-15" ISBN="1-861001-57-6">
<title>The Gorgias</title>
<author>
<name>Plato</name>
</author>
<price>9.99</price>
</book>
</bookstore>
Para obter mais informações sobre os métodos AppendChild, PrependChild, AppendChildElement e PrependChildElement, consulte a documentação de referência da classe XPathNavigator.
Inserindo nós de atributo
A XPathNavigator classe fornece os métodos a seguir para inserir nós de atributo.
Esses métodos inserem nós de atributo no nó do elemento em que um objeto XPathNavigator está atualmente posicionado. O CreateAttribute método cria um nó de atributo no nó de elemento no qual o objeto XPathNavigator está atualmente posicionado, usando o prefixo do namespace, o nome local, o URI do namespace e o valor especificados como parâmetros. O CreateAttributes método retorna um XmlWriter objeto usado para inserir nós de atributo.
No exemplo a seguir, os novos atributos discount e currency são criados no elemento filho price do primeiro elemento book no arquivo contosoBooks.xml usando o objeto XmlWriter retornado do método CreateAttributes.
XmlDocument document = new XmlDocument();
document.Load("contosoBooks.xml");
XPathNavigator navigator = document.CreateNavigator();
navigator.MoveToChild("bookstore", "http://www.contoso.com/books");
navigator.MoveToChild("book", "http://www.contoso.com/books");
navigator.MoveToChild("price", "http://www.contoso.com/books");
XmlWriter attributes = navigator.CreateAttributes();
attributes.WriteAttributeString("discount", "1.00");
attributes.WriteAttributeString("currency", "USD");
attributes.Close();
navigator.MoveToParent();
Console.WriteLine(navigator.OuterXml);
Dim document As XmlDocument = New XmlDocument()
document.Load("contosoBooks.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()
navigator.MoveToChild("bookstore", "http://www.contoso.com/books")
navigator.MoveToChild("book", "http://www.contoso.com/books")
navigator.MoveToChild("price", "http://www.contoso.com/books")
Dim attributes As XmlWriter = navigator.CreateAttributes()
attributes.WriteAttributeString("discount", "1.00")
attributes.WriteAttributeString("currency", "USD")
attributes.Close()
navigator.MoveToParent()
Console.WriteLine(navigator.OuterXml)
O exemplo usa o contosoBooks.xml arquivo como uma entrada.
<?xml version="1.0" encoding="utf-8" ?>
<bookstore xmlns="http://www.contoso.com/books">
<book genre="autobiography" publicationdate="1981-03-22" ISBN="1-861003-11-0">
<title>The Autobiography of Benjamin Franklin</title>
<author>
<first-name>Benjamin</first-name>
<last-name>Franklin</last-name>
</author>
<price>8.99</price>
</book>
<book genre="novel" publicationdate="1967-11-17" ISBN="0-201-63361-2">
<title>The Confidence Man</title>
<author>
<first-name>Herman</first-name>
<last-name>Melville</last-name>
</author>
<price>11.99</price>
</book>
<book genre="philosophy" publicationdate="1991-02-15" ISBN="1-861001-57-6">
<title>The Gorgias</title>
<author>
<name>Plato</name>
</author>
<price>9.99</price>
</book>
</bookstore>
Para obter mais informações sobre os métodos `CreateAttribute` e `CreateAttributes`, consulte a documentação de referência da classe `XPathNavigator`.
Copiando nós
Em determinados casos, talvez você queira preencher um documento XML com o conteúdo de outro documento XML. XPathNavigator classe e a XmlWriter classe podem copiar nós para um objeto XmlDocument de um objeto XmlReader ou XPathNavigator existente.
Os métodos AppendChild, PrependChild, InsertBefore e InsertAfter da classe XPathNavigator têm sobrecargas que podem aceitar um objeto XPathNavigator ou um objeto XmlReader como parâmetro.
O método da classe WriteNode tem sobrecargas que podem aceitar um objeto XmlWriter, XmlNode ou XmlReader.
O exemplo a seguir copia todos os book elementos de um documento para outro.
Dim document As XmlDocument = New XmlDocument()
document.Load("books.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()
navigator.MoveToChild("bookstore", String.Empty)
Dim newBooks As XPathDocument = New XPathDocument("newBooks.xml")
Dim newBooksNavigator As XPathNavigator = newBooks.CreateNavigator()
Dim nav As XPathNavigator
For Each nav in newBooksNavigator.SelectDescendants("book", "", false)
navigator.AppendChild(nav)
Next
document.Save("newBooks.xml");
XmlDocument document = new XmlDocument();
document.Load("books.xml");
XPathNavigator navigator = document.CreateNavigator();
navigator.MoveToChild("bookstore", String.Empty);
XPathDocument newBooks = new XPathDocument("newBooks.xml");
XPathNavigator newBooksNavigator = newBooks.CreateNavigator();
foreach (XPathNavigator nav in newBooksNavigator.SelectDescendants("book", "", false))
{
navigator.AppendChild(nav);
}
document.Save("newBooks.xml");
Inserindo valores
A classe XPathNavigator fornece os métodos SetValue e SetTypedValue para inserir valores para um nó em um objeto XmlDocument.
Inserindo valores não tipados
O método SetValue simplesmente insere o valor não tipado string passado como um parâmetro como valor do nó em que o objeto XPathNavigator está atualmente posicionado. O valor é inserido sem verificação de tipo ou sem verificar se o novo valor é válido de acordo com o tipo do nó, caso as informações do esquema estejam disponíveis.
No exemplo a seguir, o SetValue método é usado para atualizar todos os price elementos no contosoBooks.xml arquivo.
XmlDocument document = new XmlDocument();
document.Load("contosoBooks.xml");
XPathNavigator navigator = document.CreateNavigator();
XmlNamespaceManager manager = new XmlNamespaceManager(navigator.NameTable);
manager.AddNamespace("bk", "http://www.contoso.com/books");
foreach (XPathNavigator nav in navigator.Select("//bk:price", manager))
{
if (nav.Value == "11.99")
{
nav.SetValue("12.99");
}
}
Console.WriteLine(navigator.OuterXml);
Dim document As XmlDocument = New XmlDocument()
document.Load("contosoBooks.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()
Dim manager As XmlNamespaceManager = New XmlNamespaceManager(navigator.NameTable)
manager.AddNamespace("bk", "http://www.contoso.com/books")
For Each nav As XPathNavigator In navigator.Select("//bk:price", manager)
If nav.Value = "11.99" Then
nav.SetValue("12.99")
End If
Next
Console.WriteLine(navigator.OuterXml)
O exemplo usa o contosoBooks.xml arquivo como uma entrada.
<?xml version="1.0" encoding="utf-8" ?>
<bookstore xmlns="http://www.contoso.com/books">
<book genre="autobiography" publicationdate="1981-03-22" ISBN="1-861003-11-0">
<title>The Autobiography of Benjamin Franklin</title>
<author>
<first-name>Benjamin</first-name>
<last-name>Franklin</last-name>
</author>
<price>8.99</price>
</book>
<book genre="novel" publicationdate="1967-11-17" ISBN="0-201-63361-2">
<title>The Confidence Man</title>
<author>
<first-name>Herman</first-name>
<last-name>Melville</last-name>
</author>
<price>11.99</price>
</book>
<book genre="philosophy" publicationdate="1991-02-15" ISBN="1-861001-57-6">
<title>The Gorgias</title>
<author>
<name>Plato</name>
</author>
<price>9.99</price>
</book>
</bookstore>
Inserindo valores tipados
Quando o tipo de nó é um tipo simples de Esquema XML W3C, o novo valor inserido pelo método SetTypedValue é verificado em relação às facetas do tipo simples antes que o valor seja atribuído. Se o novo valor não for válido de acordo com o tipo do nó (por exemplo, definir um valor em -1 um elemento cujo tipo é xs:positiveInteger), ele resultará em uma exceção.
O exemplo a seguir tenta alterar o valor do elemento price do primeiro elemento book no arquivo contosoBooks.xml para um valor DateTime. Como o tipo de esquema XML do price elemento é definido como xs:decimal nos contosoBooks.xsd arquivos, isso resulta em uma exceção.
Dim settings As XmlReaderSettings = New XmlReaderSettings()
settings.Schemas.Add("http://www.contoso.com/books", "contosoBooks.xsd")
settings.ValidationType = ValidationType.Schema
Dim reader As XmlReader = XmlReader.Create("contosoBooks.xml", settings)
Dim document As XmlDocument = New XmlDocument()
document.Load(reader)
Dim navigator As XPathNavigator = document.CreateNavigator()
navigator.MoveToChild("bookstore", "http://www.contoso.com/books")
navigator.MoveToChild("book", "http://www.contoso.com/books")
navigator.MoveToChild("price", "http://www.contoso.com/books")
navigator.SetTypedValue(DateTime.Now)
XmlReaderSettings settings = new XmlReaderSettings();
settings.Schemas.Add("http://www.contoso.com/books", "contosoBooks.xsd");
settings.ValidationType = ValidationType.Schema;
XmlReader reader = XmlReader.Create("contosoBooks.xml", settings);
XmlDocument document = new XmlDocument();
document.Load(reader);
XPathNavigator navigator = document.CreateNavigator();
navigator.MoveToChild("bookstore", "http://www.contoso.com/books");
navigator.MoveToChild("book", "http://www.contoso.com/books");
navigator.MoveToChild("price", "http://www.contoso.com/books");
navigator.SetTypedValue(DateTime.Now);
O exemplo usa o contosoBooks.xml arquivo como uma entrada.
<?xml version="1.0" encoding="utf-8" ?>
<bookstore xmlns="http://www.contoso.com/books">
<book genre="autobiography" publicationdate="1981-03-22" ISBN="1-861003-11-0">
<title>The Autobiography of Benjamin Franklin</title>
<author>
<first-name>Benjamin</first-name>
<last-name>Franklin</last-name>
</author>
<price>8.99</price>
</book>
<book genre="novel" publicationdate="1967-11-17" ISBN="0-201-63361-2">
<title>The Confidence Man</title>
<author>
<first-name>Herman</first-name>
<last-name>Melville</last-name>
</author>
<price>11.99</price>
</book>
<book genre="philosophy" publicationdate="1991-02-15" ISBN="1-861001-57-6">
<title>The Gorgias</title>
<author>
<name>Plato</name>
</author>
<price>9.99</price>
</book>
</bookstore>
O exemplo também toma contosoBooks.xsd como parte da entrada.
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.contoso.com/books" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="bookstore">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="book">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string" />
<xs:element name="author">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="name" type="xs:string" />
<xs:element minOccurs="0" name="first-name" type="xs:string" />
<xs:element minOccurs="0" name="last-name" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="price" type="xs:decimal" />
</xs:sequence>
<xs:attribute name="genre" type="xs:string" use="required" />
<xs:attribute name="publicationdate" type="xs:date" use="required" />
<xs:attribute name="ISBN" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
As propriedades InnerXml e OuterXml
As propriedades InnerXml e OuterXml da classe XPathNavigator alteram a marcação XML dos nós em que um objeto XPathNavigator está atualmente posicionado.
A InnerXml propriedade altera a marcação XML dos nós filho no qual um objeto XPathNavigator está atualmente posicionado, com o conteúdo analisado do XML string fornecido. Da mesma forma, a OuterXml propriedade altera a marcação XML dos nós filho em que o objeto XPathNavigator está atualmente posicionado, bem como do próprio nó atual.
Além dos métodos descritos neste tópico, as propriedades InnerXml e OuterXml podem ser usadas para inserir nós e valores em um documento XML. Para mais informações sobre como usar as propriedades InnerXml e OuterXml para inserir nós e valores, consulte o tópico Modificar Dados XML usando XPathNavigator.
Conflitos de namespace e xml:lang
Determinados conflitos relacionados ao escopo do namespace e xml:lang declarações podem ocorrer ao inserir dados XML usando os métodos InsertBefore, InsertAfter, AppendChild e PrependChild da classe XPathNavigator que utilizam objetos XmlReader como parâmetros.
Veja a seguir os possíveis conflitos de namespace.
Se houver um namespace em escopo no contexto do objeto XmlReader, em que o mapeamento de prefixo para URI de namespace não está no contexto do objeto XPathNavigator, uma nova declaração de namespace será adicionada ao nó recém-inserido.
Se o mesmo URI de namespace estiver no escopo tanto no contexto do objeto XmlReader quanto no contexto do objeto XPathNavigator, mas tiver um prefixo diferente mapeado para ele em ambos os contextos, uma nova declaração de namespace será adicionada ao nó recém-inserido, com o prefixo e o URI de namespace retirados do objeto XmlReader.
Se o mesmo prefixo de namespace estiver no escopo do contexto do objeto XmlReader e do contexto do objeto XPathNavigator, mas tiver um URI de namespace diferente mapeado para ele em ambos os contextos, uma nova declaração de namespace será adicionada ao nó recém-inserido para re-declarar esse prefixo com o URI do namespace obtido no contexto do objeto XmlReader.
Se o prefixo bem como o URI do namespace nos contextos dos objetos XmlReader e XPathNavigator for o mesmo, nenhuma nova declaração de namespace é adicionada ao nó recém-inserido.
Observação
A descrição acima também se aplica a declarações de namespace com o vazio string como um prefixo (por exemplo, a declaração de namespace padrão).
Confira a seguir os xml:lang possíveis conflitos.
Se houver um
xml:langatributo no contexto do objeto XmlReader, mas não no contexto do objeto XPathNavigator, umxml:langatributo cujo valor é proveniente do objeto XmlReader é adicionado ao nó recém-inserido.Se houver um atributo
xml:langno escopo no contexto do objeto XmlReader e do objeto XPathNavigator, mas cada um tiver um valor diferente, um atributoxml:lang, cujo valor é obtido do objeto XmlReader, será adicionado ao nó recém-inserido.Se houver um atributo
xml:langno escopo dentro do contexto do objeto XmlReader e no escopo do contexto do objeto XPathNavigator, mas ambos com o mesmo valor, nenhum novo atributoxml:langserá adicionado ao nó recém-inserido.Se houver um
xml:langatributo no escopo dentro do XPathNavigator contexto do objeto, mas nenhum existente no XmlReader contexto do objeto, nenhumxml:langatributo será adicionado ao nó recém-inserido.
Inserindo nós com XmlWriter
Os métodos usados para inserir nós irmão, filho e atributo descritos na seção "Inserir nós e valores" são sobrecarregados. Os métodos InsertAfter, InsertBefore, AppendChild, PrependChild e CreateAttributes da classe XPathNavigator retornam um objeto XmlWriter usado para inserir nós.
Métodos XmlWriter sem suporte
Nem todos os métodos usados para gravar informações em um documento XML usando a XmlWriter classe são compatíveis com a XPathNavigator classe devido à diferença entre o modelo de dados XPath e o DOM (Document Object Model).
A tabela a seguir descreve os XmlWriter métodos de classe não compatíveis com a XPathNavigator classe.
| Método | Descrição |
|---|---|
| WriteEntityRef | Gera uma NotSupportedException exceção. |
| WriteDocType | Ignorado no nível raiz e gera uma NotSupportedException exceção se chamado em qualquer outro nível no documento XML. |
| WriteCData | Tratado como chamada do método WriteString para o(s) caractere(s) equivalente(s). |
| WriteCharEntity | Tratado como chamada do método WriteString para o(s) caractere(s) equivalente(s). |
| WriteSurrogateCharEntity | Tratado como chamada do método WriteString para o(s) caractere(s) equivalente(s). |
Para obter mais informações sobre a XmlWriter classe, consulte a documentação de referência de XmlWriter classe.
Vários objetos XmlWriter
É possível ter vários XPathNavigator objetos apontando para diferentes partes de um documento XML com um ou mais objetos abertos XmlWriter . Vários XmlWriter objetos são permitidos e têm suporte em cenários de execução em thread único.
Veja a seguir notas importantes a serem consideradas ao usar vários XmlWriter objetos.
Fragmentos XML escritos por objetos XmlWriter são adicionados ao documento XML quando o método Close de cada objeto XmlWriter é chamado. Até esse ponto, o XmlWriter objeto está gravando um fragmento desconectado. Se uma operação for executada no documento XML, todos os fragmentos que estão sendo gravados por um XmlWriter objeto, antes do Close chamado, não serão afetados.
Se houver um objeto aberto XmlWriter em uma subárvore XML específica e essa subárvore for excluída, o XmlWriter objeto ainda poderá ser adicionado à subárvore. A subárvore simplesmente se torna um fragmento excluído.
Se vários XmlWriter objetos forem abertos no mesmo ponto do documento XML, eles serão adicionados ao documento XML na ordem em que os XmlWriter objetos são fechados, não na ordem em que foram abertos.
O exemplo a seguir cria um XmlDocument objeto, cria um XPathNavigator objeto e usa o XmlWriter objeto retornado pelo PrependChild método para criar a estrutura do primeiro livro no books.xml arquivo. Em seguida, o exemplo o salva como o book.xml arquivo.
Dim document As XmlDocument = New XmlDocument()
Dim navigator As XPathNavigator = document.CreateNavigator()
Using writer As XmlWriter = navigator.PrependChild()
writer.WriteStartElement("bookstore")
writer.WriteStartElement("book")
writer.WriteAttributeString("genre", "autobiography")
writer.WriteAttributeString("publicationdate", "1981-03-22")
writer.WriteAttributeString("ISBN", "1-861003-11-0")
writer.WriteElementString("title", "The Autobiography of Benjamin Franklin")
writer.WriteStartElement("author")
writer.WriteElementString("first-name", "Benjamin")
writer.WriteElementString("last-name", "Franklin")
writer.WriteElementString("price", "8.99")
writer.WriteEndElement()
writer.WriteEndElement()
writer.WriteEndElement()
End Using
document.Save("book.xml")
XmlDocument document = new XmlDocument();
XPathNavigator navigator = document.CreateNavigator();
using (XmlWriter writer = navigator.PrependChild())
{
writer.WriteStartElement("bookstore");
writer.WriteStartElement("book");
writer.WriteAttributeString("genre", "autobiography");
writer.WriteAttributeString("publicationdate", "1981-03-22");
writer.WriteAttributeString("ISBN", "1-861003-11-0");
writer.WriteElementString("title", "The Autobiography of Benjamin Franklin");
writer.WriteStartElement("author");
writer.WriteElementString("first-name", "Benjamin");
writer.WriteElementString("last-name", "Franklin");
writer.WriteElementString("price", "8.99");
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndElement();
}
document.Save("book.xml");
Salvando um documento XML
Salvar alterações feitas em um XmlDocument objeto como resultado dos métodos descritos neste tópico é executado usando os métodos da XmlDocument classe. Para obter mais informações sobre como salvar alterações feitas em um XmlDocument objeto, consulte Salvar e escrever um documento.