Прочитать на английском

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


XPathNavigator.InsertElementBefore(String, String, String, String) Метод

Определение

Создает перед текущим узлом новый элемент того же уровня, используя заданный префикс пространства имен, локальное имя, URI пространства имен и значение.

C#
public virtual void InsertElementBefore(string? prefix, string localName, string? namespaceURI, string? value);
C#
public virtual void InsertElementBefore(string prefix, string localName, string namespaceURI, string value);

Параметры

prefix
String

Префикс пространства имен нового дочернего элемента (если имеется).

localName
String

Локальное имя нового дочернего элемента (если имеется).

namespaceURI
String

URI пространства имен нового дочернего элемента (если имеется). Empty и null эквивалентны.

value
String

Значение нового дочернего элемента. Если передается значение Empty или null, то создается пустой элемент.

Исключения

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

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

Примеры

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

C#
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.InsertElementBefore(navigator.Prefix, "pages", navigator.LookupNamespace(navigator.Prefix), "100");

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

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

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>

Комментарии

Значения префикса пространства имен и URI можно получить с помощью LookupPrefix метода или LookupNamespace . Например, следующий синтаксис вставляет одноуровневый элемент с помощью пространства xmlns:bk="http://www.contoso.com/books"имен область :

C#
navigator.InsertElementBefore(navigator.Prefix, "pages", LookupNamespaceURI(navigator.Prefix), String.Empty)

При этом создается новый элемент одноуровневого уровня <bk:pages/> .

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

  • Если указанный префикс пространства имен имеет значение null или String.Empty, то префикс для URI пространства имен нового элемента получается из текущих пространств имен в область. Если для указанного URI пространства имен на текущем область не назначен префикс пространства имен, то префикс пространства имен создается автоматически.

  • Метод InsertElementBefore действителен только в XPathNavigator том случае, если объект расположен в элементе, тексте, инструкции по обработке или узле комментариев.

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

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

Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1