Поделиться через


XPathNavigator.InsertBefore Метод

Определение

Создает перед текущим выбранным узлом новый узел того же уровня.

Перегрузки

InsertBefore()

Возвращает объект XmlWriter, используемый для создания нового сестринского узла перед текущим выбранным узлом.

InsertBefore(String)

Создает перед текущим выбранным узлом новый узел того же уровня, используя заданную строку XML.

InsertBefore(XmlReader)

Создает новый сестринский узел того же уровня перед выбранным в данный момент узлом, используя XML-содержимое указанного объекта XmlReader.

InsertBefore(XPathNavigator)

Создает новый сестринский узел перед выбранным в данный момент узлом, используя узлы, содержащиеся в указанном объекте XPathNavigator.

InsertBefore()

Исходный код:
XPathNavigator.cs
Исходный код:
XPathNavigator.cs
Исходный код:
XPathNavigator.cs

Возвращает объект XmlWriter, используемый для создания нового сестринского узла перед текущим выбранным узлом.

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

Возвращаемое значение

Объект XmlWriter, используемый для создания нового сестринского перед текущим выбранным узлом.

Исключения

Положение XPathNavigator не допускает вставку нового сестринского узла перед текущим узлом.

Объект XPathNavigator не поддерживает редактирование.

Примеры

В следующем примере новый pages элемент вставляется перед дочерним price элементом первого book элемента в contosoBooks.xml файле с помощью объекта , XmlWriter возвращаемого методом InsertBefore .

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^ pages = navigator->InsertBefore();
pages->WriteElementString("pages", "100");
pages->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 pages = navigator.InsertBefore();
pages.WriteElementString("pages", "100");
pages.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 pages As XmlWriter = navigator.InsertBefore()
pages.WriteElementString("pages", "100")
pages.Close()

navigator.MoveToParent()
Console.WriteLine(navigator.OuterXml)

В примере в качестве входных данных используется файл contosoBooks.xml.

<?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>  

Комментарии

Ниже приведены важные примечания InsertBefore , которые следует учитывать при использовании метода .

  • Новый одноуровневый узел не вставляется до вызова Close метода XmlWriter объекта .

  • Метод InsertBefore действителен, только если XPathNavigator находится в элементе, тексте, инструкции по обработке или узле комментария.

  • Метод InsertBefore не влияет на положение XPathNavigatorобъекта .

Применяется к

InsertBefore(String)

Исходный код:
XPathNavigator.cs
Исходный код:
XPathNavigator.cs
Исходный код:
XPathNavigator.cs

Создает перед текущим выбранным узлом новый узел того же уровня, используя заданную строку XML.

public:
 virtual void InsertBefore(System::String ^ newSibling);
public virtual void InsertBefore (string newSibling);
abstract member InsertBefore : string -> unit
override this.InsertBefore : string -> unit
Public Overridable Sub InsertBefore (newSibling As String)

Параметры

newSibling
String

Строка данных XML для нового узла того же уровня.

Исключения

Параметр строки XML — null.

Положение XPathNavigator не допускает вставку нового сестринского узла перед текущим узлом.

Объект XPathNavigator не поддерживает редактирование.

Неправильный формат параметра строки XML.

Примеры

В следующем примере новый элемент pages вставляется перед дочерним элементом price первого элемента book в файле contosoBooks.xml.

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");

navigator->InsertBefore("<pages>100</pages>");

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");

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)

В примере в качестве входных данных используется файл contosoBooks.xml.

<?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>  

Комментарии

Чтобы создать узел элемента, включите весь синтаксис XML в параметр строки XML. Строка для нового book узла — InsertBefore("<book/>"). Строка для вставки текста "book" перед текстовым узлом текущего узла имеет значение InsertBefore("book"). Если XML-строка содержит несколько узлов, добавляются все узлы.

Ниже приведены важные примечания InsertBefore , которые следует учитывать при использовании метода .

  • Метод InsertBefore действителен, только если XPathNavigator находится в элементе, тексте, инструкции по обработке или узле комментария.

  • Метод InsertBefore не влияет на положение XPathNavigatorобъекта .

Применяется к

InsertBefore(XmlReader)

Исходный код:
XPathNavigator.cs
Исходный код:
XPathNavigator.cs
Исходный код:
XPathNavigator.cs

Создает новый сестринский узел того же уровня перед выбранным в данный момент узлом, используя XML-содержимое указанного объекта XmlReader.

public:
 virtual void InsertBefore(System::Xml::XmlReader ^ newSibling);
public virtual void InsertBefore (System.Xml.XmlReader newSibling);
abstract member InsertBefore : System.Xml.XmlReader -> unit
override this.InsertBefore : System.Xml.XmlReader -> unit
Public Overridable Sub InsertBefore (newSibling As XmlReader)

Параметры

newSibling
XmlReader

Объект XmlReader, расположенный в XML-данных для нового сестринского узла.

Исключения

Объект XmlReader находится в состоянии ошибки или закрыт.

Объект XmlReader имеет параметр null.

Положение XPathNavigator не допускает вставку нового сестринского узла перед текущим узлом.

Объект XPathNavigator не поддерживает редактирование.

XML-содержимое параметра объекта XmlReader сформировано некорректно.

Примеры

В следующем примере новый pages элемент вставляется перед дочерним price элементом первого book элемента в contosoBooks.xml файле с помощью указанного XmlReader объекта . Пространство http://www.contoso.com/books имен указывается таким образом, чтобы новый элемент уровня вставлялся с использованием того же пространства имен, что и XML-документ.

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");

XmlReader^ pages = XmlReader::Create(gcnew StringReader("<pages xmlns=\"http://www.contoso.com/books\">100</pages>"));

navigator->InsertBefore(pages);

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");

XmlReader pages = XmlReader.Create(new StringReader("<pages xmlns=\"http://www.contoso.com/books\">100</pages>"));

navigator.InsertBefore(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")

Dim pages As XmlReader = XmlReader.Create(New StringReader("<pages xmlns='http://www.contoso.com/books'>100</pages>"))

navigator.InsertBefore(pages)

navigator.MoveToParent()
Console.WriteLine(navigator.OuterXml)

В примере в качестве входных данных используется файл contosoBooks.xml.

<?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>  

Комментарии

Ниже приведены важные примечания InsertBefore , которые следует учитывать при использовании метода .

  • XmlReader Если объект расположен над последовательностью узлов XML, добавляются все узлы в последовательности.

  • Метод InsertBefore действителен, только если XPathNavigator находится в элементе, тексте, инструкции по обработке или узле комментария.

  • Метод InsertBefore не влияет на положение XPathNavigatorобъекта .

Применяется к

InsertBefore(XPathNavigator)

Исходный код:
XPathNavigator.cs
Исходный код:
XPathNavigator.cs
Исходный код:
XPathNavigator.cs

Создает новый сестринский узел перед выбранным в данный момент узлом, используя узлы, содержащиеся в указанном объекте XPathNavigator.

public:
 virtual void InsertBefore(System::Xml::XPath::XPathNavigator ^ newSibling);
public virtual void InsertBefore (System.Xml.XPath.XPathNavigator newSibling);
abstract member InsertBefore : System.Xml.XPath.XPathNavigator -> unit
override this.InsertBefore : System.Xml.XPath.XPathNavigator -> unit
Public Overridable Sub InsertBefore (newSibling As XPathNavigator)

Параметры

newSibling
XPathNavigator

Объект XPathNavigator, расположенный в узле, который следует добавить как новый сестринский узел.

Исключения

Объект XPathNavigator имеет параметр null.

Положение XPathNavigator не допускает вставку нового сестринского узла перед текущим узлом.

Объект XPathNavigator не поддерживает редактирование.

Примеры

В следующем примере новый pages элемент вставляется перед дочерним price элементом первого book элемента в contosoBooks.xml файле с помощью узла, содержащегося в указанном объекте XPathNavigator . Пространство http://www.contoso.com/books имен указывается таким образом, чтобы новый элемент уровня вставлялся с использованием того же пространства имен, что и XML-документ.

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");

XmlDocument^ childNodes = gcnew XmlDocument();
childNodes->Load(gcnew StringReader("<pages xmlns=\"http://www.contoso.com/books\">100</pages>"));
XPathNavigator^ childNodesNavigator = childNodes->CreateNavigator();

navigator->InsertBefore(childNodesNavigator);

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");

XmlDocument childNodes = new XmlDocument();
childNodes.Load(new StringReader("<pages xmlns=\"http://www.contoso.com/books\">100</pages>"));
XPathNavigator childNodesNavigator = childNodes.CreateNavigator();

navigator.InsertBefore(childNodesNavigator);

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 childNodes As XmlDocument = New XmlDocument()
childNodes.Load(New StringReader("<pages xmlns='http://www.contoso.com/books'>100</pages>"))
Dim childNodesNavigator As XPathNavigator = childNodes.CreateNavigator()

navigator.InsertBefore(childNodesNavigator)

navigator.MoveToParent()
Console.WriteLine(navigator.OuterXml)

В примере в качестве входных данных используется файл contosoBooks.xml.

<?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>  

Комментарии

Ниже приведены важные примечания InsertBefore , которые следует учитывать при использовании метода .

  • XPathNavigator Если объект расположен над последовательностью узлов XML, добавляются все узлы в последовательности.

  • Метод InsertBefore действителен, только если XPathNavigator находится в элементе, тексте, инструкции по обработке или узле комментария.

  • Метод InsertBefore не влияет на положение XPathNavigatorобъекта .

Применяется к