XPathNavigator.CreateAttributes Método

Definição

Retorna um objeto XmlWriter 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 objeto XmlWriter usado para criar novos atributos no elemento atual.

Exceções

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

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

Exemplos

No exemplo a seguir, um novo discount e atributos de currency são criados no elemento filho de price do primeiro elemento de book no arquivo de contosoBooks.xml usando o objeto de XmlWriter retornado pelo método de CreateAttributes .

XmlDocument^ document = gcnew 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);
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 arquivo contosoBooks.xml como 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 observações importantes a serem consideradas ao usar o CreateAttributes método .

  • Quando o XPathNavigator é 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 null, o prefixo para o URI do namespace do novo atributo será obtido dos namespaces atuais no escopo. Se não houver nenhum prefixo de namespace atribuído ao URI de 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 de namespace e prefixo de 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 está 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 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