Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. 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 objetos que podem editar um documento XML são criados pelo CreateNavigator método da XmlDocument classe. XPathNavigator Os objetos criados pela XPathDocument classe são somente leitura e qualquer tentativa de usar os métodos de edição de um XPathNavigator objeto criado por um XPathDocument objeto resulta em um NotSupportedException.
Para obter mais informações sobre como criar objetos editáveis XPathNavigator , consulte Lendo dados XML usando XPathDocument e XmlDocument.
Inserir nós
A XPathNavigator classe fornece métodos para inserir nós irmãos, filhos e atributos 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.
Inserção de nós irmãos
A XPathNavigator classe fornece os seguintes métodos para inserir nós irmãos.
Esses métodos inserem nós irmãos antes e depois do nó em que um objeto XPathNavigator está atualmente posicionado.
Os métodos InsertAfter e InsertBefore são sobrecarregados e aceitam um objeto string, XmlReader, ou um objeto XPathNavigator que contém o nó irmão a adicionar como parâmetros. Ambos os métodos também retornam um objeto XmlWriter usado para inserir nós irmãos.
InsertElementAfter e InsertElementBefore métodos inserem um único nó irmão antes e depois do nó onde um XPathNavigator objeto está posicionado no momento, usando o prefixo do namespace, o nome local, o URI do namespace e o valor especificado 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 InsertAfter, InsertBefore, InsertElementAfter e InsertElementBefore, consulte a documentação de referência da classe XPathNavigator.
Inserção de nós filhos
A XPathNavigator classe fornece os seguintes métodos para inserir nós filho.
Esses métodos anexam e antepõem nós filhos ao final e ao início da lista de nós filhos do nó em que um XPathNavigator objeto está posicionado no momento.
Como os métodos na seção "Inserir Nós Irmãos", os métodos AppendChild e PrependChild aceitam um objeto string, XmlReader ou XPathNavigator que contém o nó filho para adicionar como parâmetros. Ambos os métodos também retornam um XmlWriter objeto usado para inserir nós filho.
Também como os métodos na seção "Inserindo 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 filho 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 especificado como parâmetros.
No exemplo a seguir, um novo elemento filho pages é anexado à lista de elementos filho do primeiro elemento book no ficheiro 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 AppendChild, PrependChild, AppendChildElement e PrependChildElement, consulte a documentação de referência da classe XPathNavigator.
Inserção de nós de atributo
A XPathNavigator classe fornece os seguintes métodos para inserir nós de atributo.
Esses métodos inserem nós de atributo no nó do elemento em que um XPathNavigator objeto está atualmente posicionado. O CreateAttribute método cria um nó de atributo no nó do elemento em que um XPathNavigator objeto está posicionado no momento usando o prefixo do namespace, o nome local, o URI do namespace e o valor especificado como parâmetros. O CreateAttributes método retorna um XmlWriter objeto usado para inserir nós de atributo.
No exemplo a seguir, novos discount e currency atributos são criados no elemento filho price do primeiro elemento book no ficheiro 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 certos casos, você pode querer preencher um documento XML com o conteúdo de outro documento XML. Tanto a classe XPathNavigator quanto a classe XmlWriter podem copiar nós para um XmlDocument objeto de um objeto XmlReader ou XPathNavigator existente.
O AppendChild, PrependChild, InsertBefore e InsertAfter métodos da XPathNavigator classe todos têm sobrecargas que podem aceitar um XPathNavigator objeto ou um XmlReader objeto como um parâmetro.
O WriteNode método da XmlWriter classe tem sobrecargas que podem aceitar um XmlNode, XmlReader, ou XPathNavigator objeto.
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 de um nó num objeto XmlDocument.
Inserindo valores não tipados
O método SetValue simplesmente insere o valor não tipado string, passado como parâmetro, como o valor do nó onde o objeto XPathNavigator está atualmente posicionado. O valor é inserido sem qualquer verificação de tipo, ou sem confirmar que o novo valor é válido em relação ao 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 digitados
Quando o tipo de um 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, definindo um valor de -1 em um elemento cujo tipo é xs:positiveInteger), isso resultará em uma exceção.
O exemplo a seguir tenta alterar o valor do elemento price do primeiro elemento book no ficheiro 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 o contosoBooks.xsd como uma 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 propriedade InnerXml altera a marcação XML dos nós filho em que um objeto XPathNavigator está atualmente posicionado, utilizando o conteúdo analisado do XML string fornecido. Da mesma forma, a OuterXml propriedade altera a marcação XML dos nós filho onde um objeto XPathNavigator está atualmente posicionado, assim como o próprio nó em questão.
Além dos métodos descritos neste tópico, as InnerXml propriedades e OuterXml podem ser usadas para inserir nós e valores em um documento XML. Para obter mais informações sobre como usar as InnerXml propriedades e OuterXml para inserir nós e valores, consulte o tópico Modificar dados XML usando XPathNavigator .
Conflitos de namespace e xml:lang
Certos conflitos relacionados ao escopo de namespace e às xml:lang declarações podem ocorrer ao inserir dados XML usando os InsertBefore, InsertAfter, AppendChild e PrependChild métodos da classe XPathNavigator que usam XmlReader objetos como parâmetros.
A seguir estão os possíveis conflitos de namespace.
Se houver um namespace no escopo do contexto do objeto XmlReader, onde o mapeamento do prefixo para o URI de namespace não está no contexto do objeto XPathNavigator, uma nova declaração de namespace é adicionada ao nó recém-inserido.
Se o mesmo URI de namespace estiver no escopo dentro do contexto do objeto XmlReader e do 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 dentro do contexto do XmlReader objeto e do contexto do XPathNavigator objeto, 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 que redeclarará esse prefixo com o URI de namespace retirado do XmlReader objeto.
Se o prefixo, bem como o URI do namespace no contexto do objeto XmlReader e no contexto do objeto XPathNavigator forem os mesmos, nenhuma nova declaração de namespace será 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).
Seguem-se os possíveis xml:lang conflitos.
Se houver um
xml:langatributo no escopo dentro do contexto do objeto XmlReader, mas não no contexto do objeto XPathNavigator, umxml:langatributo cujo valor é retirado do objeto XmlReader será adicionado ao nó recém-inserido.Se houver um atributo
xml:langdentro do escopo do contexto do objeto XmlReader e do objeto XPathNavigator, mas cada um tiver um valor diferente, um atributoxml:langcujo valor é extraído do objeto XmlReader será adicionado ao nó recém-inserido.Se houver um
xml:langatributo dentro do escopo do contexto do XmlReader objeto e do contexto do XPathNavigator objeto, ambos com o mesmo valor, nenhum novoxml:langatributo será adicionado no nó recém-inserido.Se houver um atributo
xml:langno escopo dentro do contexto do objeto XPathNavigator, mas nenhum atributo XmlReader presente no contexto do objeto, nenhum atributoxml:langserá adicionado ao nó recém-inserido.
Inserir nós com XmlWriter
Os métodos usados para inserir nós irmãos, filhos e atributos descritos na seção "Inserindo nós e valores" estão sobrecarregados. Os InsertAftermétodos , InsertBefore, AppendChildPrependChild, e CreateAttributes da XPathNavigator classe retornam um XmlWriter objeto usado para inserir nós.
Métodos sem suporte de XmlWriter
Nem todos os métodos usados para escrever informações num documento XML usando a classe XmlWriter são suportados pela classe XPathNavigator devido à diferença entre o modelo de dados XPath e o Modelo de Objeto de Documento (DOM).
A tabela a seguir descreve os métodos da classe XmlWriter que não são suportados pela classe XPathNavigator.
| Método | Descrição |
|---|---|
| WriteEntityRef | Lança uma NotSupportedException exceção. |
| WriteDocType | Ignorado ao nível da raiz e lança uma exceção NotSupportedException se for chamado em qualquer outro nível no documento XML. |
| WriteCData | Tratada como uma chamada para o WriteString método para o(s) caractere(s) equivalente(s). |
| WriteCharEntity | Tratada como uma chamada para o WriteString método para o(s) caractere(s) equivalente(s). |
| WriteSurrogateCharEntity | Tratada como uma chamada para o WriteString método para o(s) caractere(s) equivalente(s). |
Para obter mais informações sobre a classe XmlWriter, consulte a documentação de referência de classe XmlWriter.
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 suportados em cenários de thread único.
A seguir estão observações importantes a serem consideradas ao usar vários XmlWriter objetos.
Fragmentos XML escritos por XmlWriter são adicionados ao documento XML quando o método Close de cada objeto XmlWriter é chamado. Até esse ponto, o objeto está escrevendo um fragmento XmlWriter desconectado. Se uma operação for executada no documento XML, quaisquer fragmentos que estejam sendo gravados por um XmlWriter objeto, antes que o Close tenha sido 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, em seguida, usa o XmlWriter objeto retornado pelo PrependChild método para criar a estrutura do primeiro livro no books.xml arquivo. O exemplo então 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");
Guardar um documento XML
Salvar alterações feitas em um XmlDocument objeto como resultado dos métodos descritos neste tópico é executado usando os XmlDocument métodos da classe. Para obter mais informações sobre como salvar alterações feitas em um XmlDocument objeto, consulte Salvando e gravando um documento.
Ver também
- XmlDocument
- XPathDocument
- XPathNavigator
- Processar dados XML usando o modelo de dados XPath
- Modificar dados XML usando XPathNavigator
- Remover dados XML usando XPathNavigator