XPathNavigator.CreateAttributes Método

Definição

Retorna um XmlWriter objeto usado para criar novos atributos no elemento atual.

public:
 virtual System::Xml::XmlWriter ^ CreateAttributes();
public virtual System.Xml.XmlWriter CreateAttributes();
abstract member CreateAttributes : unit -> System.Xml.XmlWriter
override this.CreateAttributes : unit -> System.Xml.XmlWriter
Public Overridable Function CreateAttributes () As XmlWriter

Retornos

Um XmlWriter objeto usado para criar novos atributos no elemento atual.

Exceções

O XPathNavigator não está posicionado em um nó de elemento.

O XPathNavigator não dá suporte à edição.

Exemplos

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>

Comentários

Veja a seguir notas importantes a serem consideradas ao usar o CreateAttributes método.

  • Quando o XPathNavigator elemento é posicionado em um elemento, os novos atributos criados pelo XPathNavigator método são colocados no final da lista de atributos do elemento atual.

  • Os novos atributos não são inseridos até que o Close método do XmlWriter objeto seja chamado.

  • Se o prefixo de namespace especificado for String.Empty ou nullo prefixo para o URI do namespace do novo atributo for obtido dos namespaces atuais no escopo. Se não houver nenhum prefixo de namespace atribuído ao URI do namespace especificado no escopo atual, um prefixo de namespace será gerado automaticamente. Por exemplo, para criar um novo atributo em um elemento no namespace padrão do contosoBooks.xml arquivo, (xmlns="http://www.contoso.com/books"), especifique null ou String.Empty para os parâmetros de URI do namespace e do prefixo do namespace. Especificar http://www.contoso.com/books como o parâmetro URI do namespace fará com que o CreateAttribute método gere automaticamente um prefixo de namespace para o novo atributo.

  • Se o novo atributo criado for um nó de namespace que entra em conflito com uma declaração de namespace no elemento, seja porque o prefixo de namespace escolhido é usado por outra declaração de namespace no mesmo escopo ou porque o prefixo escolhido é o mesmo que o do elemento, mas está associado a um URI de namespace diferente, uma exceção é gerada.

  • O XmlWriter objeto retornado só pode ser usado para criar atributos. Chamar outros XmlWriter métodos de objeto que não criam atributos gera uma exceção.

  • O CreateAttributes método não afeta a posição do XPathNavigator.

Aplica-se a