XPathNavigator.CreateAttributes Método

Definição

Devolve 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

Devoluções

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

Exceções

O XPathNavigator não está posicionado num nó elemento.

Não XPathNavigator suporta edição.

Exemplos

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>

Observações

Seguem-se as notas importantes a considerar ao utilizar o CreateAttributes método.

  • Quando o XPathNavigator está posicionado num 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 espaço de nomes especificado for String.Empty ou null, o prefixo para o URI do espaço de nomes do novo atributo é obtido a partir dos espaços de nomes atuais no âmbito do escopo. Se não houver prefixo de espaço de nomes atribuído ao URI especificado no âmbito atual, um prefixo de espaço de nomes é automaticamente gerado. Por exemplo, para criar um novo atributo num elemento no namespace padrão do contosoBooks.xml ficheiro, (xmlns="http://www.contoso.com/books"), especifica null ou String.Empty para ambos, o prefixo do namespace e os parâmetros do URI do namespace. Especificar http://www.contoso.com/books como 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 espaço de nomes que entra em conflito com uma declaração de espaço de nomes no elemento, seja porque o prefixo de espaço escolhido é usado por outra declaração de espaço de nomes no mesmo escopo, seja porque o prefixo escolhido é igual ao do elemento mas está ligado a um URI de espaço de nomes diferente, é lançada uma exceção.

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

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

Aplica-se a