XmlDocument Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Представляет XML-документ. Этот класс можно использовать для загрузки, проверки, редактирования, добавления и размещения XML в документе.
public ref class XmlDocument : System::Xml::XmlNode
public class XmlDocument : System.Xml.XmlNode
type XmlDocument = class
inherit XmlNode
Public Class XmlDocument
Inherits XmlNode
- Наследование
- Производный
Комментарии
Класс XmlDocument — это представление XML-документа в памяти. Он реализует объектную модель XML-документа W3C (DOM) уровня 1 Core и уровень Core DOM 2.
DOM означает объектную модель документа. Дополнительные сведения см. в статье об объектной модели XML-документа (DOM).
Xml можно загрузить в DOM с помощью XmlDocument класса, а затем программно считывать, изменять и удалять XML в документе.
Если вы хотите открыть XmlDocument класс и узнать, как он реализован, см. справочный источник.
Загрузка XML в объектную модель документа
Начните с XML-документа, такого как этот, который содержит несколько книг в коллекции. Он содержит основные вещи, которые можно найти в любом XML-документе, включая пространство имен, элементы, представляющие данные и атрибуты, описывающие данные.
<?xml version="1.0" encoding="utf-8"?>
<books xmlns="http://www.contoso.com/books">
<book genre="novel" ISBN="1-861001-57-8" publicationdate="1823-01-28">
<title>Pride And Prejudice</title>
<price>24.95</price>
</book>
<book genre="novel" ISBN="1-861002-30-1" publicationdate="1985-01-01">
<title>The Handmaid's Tale</title>
<price>29.95</price>
</book>
<book genre="novel" ISBN="1-861001-45-3" publicationdate="1811-01-01">
<title>Sense and Sensibility</title>
<price>19.95</price>
</book>
</books>
Затем загрузите эти данные в DOM, чтобы вы могли работать с ним в памяти. Наиболее популярным способом этого является ссылка на файл на локальном компьютере или в сети.
В этом примере загружается XML из файла. Если файл не существует, он просто создает xml-файл и загружает его.
XmlDocument doc = new XmlDocument();
doc.PreserveWhitespace = true;
try { doc.Load("booksData.xml"); }
catch (System.IO.FileNotFoundException)
{
doc.LoadXml("<?xml version=\"1.0\"?> \n" +
"<books xmlns=\"http://www.contoso.com/books\"> \n" +
" <book genre=\"novel\" ISBN=\"1-861001-57-8\" publicationdate=\"1823-01-28\"> \n" +
" <title>Pride And Prejudice</title> \n" +
" <price>24.95</price> \n" +
" </book> \n" +
" <book genre=\"novel\" ISBN=\"1-861002-30-1\" publicationdate=\"1985-01-01\"> \n" +
" <title>The Handmaid's Tale</title> \n" +
" <price>29.95</price> \n" +
" </book> \n" +
"</books>");
}
Dim doc As XmlDocument = New XmlDocument
doc.PreserveWhitespace = True
Try
doc.Load("booksData.xml")
Catch ex As System.IO.FileNotFoundException
' If no file is found, generate some XML.
doc.LoadXml("<?xml version=""1.0""?> " & ControlChars.NewLine & _
"<books xmlns=""http://www.contoso.com/books""> " & ControlChars.NewLine & _
" <book genre=""novel"" ISBN=""1-861001-57-8"" publicationdate=""1823-01-28""> " & ControlChars.NewLine & _
" <title>Pride And Prejudice</title> " & ControlChars.NewLine & _
" <price>24.95</price> " & ControlChars.NewLine & _
" </book> " & ControlChars.NewLine & _
" <book genre=""novel"" ISBN=""1-861002-30-1"" publicationdate=""1985-01-01""> " & ControlChars.NewLine & _
" <title>The Handmaid's Tale</title> " & ControlChars.NewLine & _
" <price>29.95</price> " & ControlChars.NewLine & _
" </book> " & ControlChars.NewLine & _
"</books>")
End Try
Дополнительные сведения см. в статье "Чтение XML-документа" в DOM.
Проверьте на соответствие схеме
Начните с схемы XML, как показано ниже. Эта схема определяет типы данных в XML и необходимые атрибуты.
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
attributeFormDefault="unqualified"
elementFormDefault="qualified"
targetNamespace="http://www.contoso.com/books">
<xs:element name="books">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="book">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string" />
<xs:element name="price" type="xs:decimal" />
</xs:sequence>
<xs:attribute name="genre" type="xs:string" use="required" />
<xs:attribute name="ISBN" type="xs:string" use="required" />
<xs:attribute name="publicationdate" type="xs:date" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
XmlReader Создайте объект с помощью схемы, а затем загрузите этот объект в DOM. Создайте обработчик событий, который выполняется при попытке кода изменить XML-файл способами, которые нарушают правила схемы.
В этих блоках кода показаны вспомогательные методы, которые делают все это.
//************************************************************************************
//
// Helper method that generates an XML string.
//
//************************************************************************************
private string generateXMLString()
{
string xml = "<?xml version=\"1.0\"?> \n" +
"<books xmlns=\"http://www.contoso.com/books\"> \n" +
" <book genre=\"novel\" ISBN=\"1-861001-57-8\" publicationdate=\"1823-01-28\"> \n" +
" <title>Pride And Prejudice</title> \n" +
" <price>24.95</price> \n" +
" </book> \n" +
" <book genre=\"novel\" ISBN=\"1-861002-30-1\" publicationdate=\"1985-01-01\"> \n" +
" <title>The Handmaid's Tale</title> \n" +
" <price>29.95</price> \n" +
" </book> \n" +
" <book genre=\"novel\" ISBN=\"1-861001-45-3\" publicationdate=\"1811-01-01\"> \n" +
" <title>Sense and Sensibility</title> \n" +
" <price>19.95</price> \n" +
" </book> \n" +
"</books>";
return xml;
}
//************************************************************************************
//
// Associate the schema with XML. Then, load the XML and validate it against
// the schema.
//
//************************************************************************************
public XmlDocument LoadDocumentWithSchemaValidation(bool generateXML, bool generateSchema)
{
XmlReader reader = null;
XmlReaderSettings settings = new XmlReaderSettings();
// Helper method to retrieve schema.
XmlSchema schema = getSchema(generateSchema);
settings.Schemas.Add(schema);
settings.ValidationEventHandler += ValidationCallback;
settings.ValidationFlags =
settings.ValidationFlags | XmlSchemaValidationFlags.ReportValidationWarnings;
settings.ValidationType = ValidationType.Schema;
if (!generateXML)
{
try
{
reader = XmlReader.Create("booksData.xml", settings);
}
catch (FileNotFoundException ex)
{
Console.WriteLine(
$"XML file not found so generating: {ex.Message}");
generateXML = true;
}
}
if (generateXML)
{
string xml = generateXMLString();
StringReader stringReader = new StringReader(xml);
reader = XmlReader.Create(stringReader, settings);
}
XmlDocument doc = new XmlDocument();
doc.PreserveWhitespace = true;
doc.Load(reader);
reader.Close();
return doc;
}
//************************************************************************************
//
// Helper method that generates an XML Schema.
//
//************************************************************************************
private string generateXMLSchema()
{
string xmlSchema =
"<?xml version=\"1.0\" encoding=\"utf-8\"?> " +
"<xs:schema attributeFormDefault=\"unqualified\" " +
"elementFormDefault=\"qualified\" targetNamespace=\"http://www.contoso.com/books\" " +
"xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"> " +
"<xs:element name=\"books\"> " +
"<xs:complexType> " +
"<xs:sequence> " +
"<xs:element maxOccurs=\"unbounded\" name=\"book\"> " +
"<xs:complexType> " +
"<xs:sequence> " +
"<xs:element name=\"title\" type=\"xs:string\" /> " +
"<xs:element name=\"price\" type=\"xs:decimal\" /> " +
"</xs:sequence> " +
"<xs:attribute name=\"genre\" type=\"xs:string\" use=\"required\" /> " +
"<xs:attribute name=\"publicationdate\" type=\"xs:date\" use=\"required\" /> " +
"<xs:attribute name=\"ISBN\" type=\"xs:string\" use=\"required\" /> " +
"</xs:complexType> " +
"</xs:element> " +
"</xs:sequence> " +
"</xs:complexType> " +
"</xs:element> " +
"</xs:schema> ";
return xmlSchema;
}
//************************************************************************************
//
// Helper method that gets a schema
//
//************************************************************************************
private XmlSchema getSchema(bool generateSchema)
{
XmlSchemaSet xs = new XmlSchemaSet();
XmlSchema schema = null;
if (!generateSchema)
{
try
{
schema = xs.Add("http://www.contoso.com/books", "booksData.xsd");
}
catch (FileNotFoundException ex)
{
Console.WriteLine(
$"XSD file not found so generating: {ex.Message}");
generateSchema = true;
}
}
if (generateSchema)
{
string xmlSchemaString = generateXMLSchema();
StringReader stringReader = new StringReader(xmlSchemaString);
XmlReader reader = XmlReader.Create(stringReader);
schema = xs.Add("http://www.contoso.com/books", reader);
}
return schema;
}
//************************************************************************************
//
// Helper method to validate the XML against the schema.
//
//************************************************************************************
private void validateXML(bool generateSchema, XmlDocument doc)
{
if (doc.Schemas.Count == 0)
{
// Helper method to retrieve schema.
XmlSchema schema = getSchema(generateSchema);
doc.Schemas.Add(schema);
}
// Use a callback to validate the XML node against the schema.
doc.Validate(ValidationCallback);
}
//************************************************************************************
//
// Event handler that is raised when XML doesn't validate against the schema.
//
//************************************************************************************
void ValidationCallback(object sender,
System.Xml.Schema.ValidationEventArgs e)
{
if (e.Severity == XmlSeverityType.Warning)
{
Console.WriteLine
("The following validation warning occurred: " + e.Message);
}
else if (e.Severity == XmlSeverityType.Error)
{
Console.WriteLine
("The following critical validation errors occurred: " + e.Message);
}
}
'************************************************************************************
'
' Associate the schema with XML. Then, load the XML and validate it against
' the schema.
'
'************************************************************************************
Public Function LoadDocumentWithSchemaValidation(ByVal generateXML As Boolean, ByVal generateSchema As Boolean) As XmlDocument
Dim reader As XmlReader
Dim settings As XmlReaderSettings = New XmlReaderSettings
' Helper method to retrieve schema.
Dim schema As XmlSchema = getSchema(generateSchema)
If (schema Is Nothing) Then
Return Nothing
End If
settings.Schemas.Add(schema)
AddHandler settings.ValidationEventHandler, AddressOf settings_ValidationEventHandler
settings.ValidationFlags = (settings.ValidationFlags Or XmlSchemaValidationFlags.ReportValidationWarnings)
settings.ValidationType = ValidationType.Schema
Try
reader = XmlReader.Create("booksData.xml", settings)
Catch ex As System.IO.FileNotFoundException
If generateXML Then
Dim xml As String = generateXMLString()
Dim byteArray() As Byte = Encoding.UTF8.GetBytes(xml)
Dim stream As MemoryStream = New MemoryStream(byteArray)
reader = XmlReader.Create(stream, settings)
Else
Return Nothing
End If
End Try
Dim doc As XmlDocument = New XmlDocument
doc.PreserveWhitespace = True
doc.Load(reader)
reader.Close()
Return doc
End Function
'************************************************************************************
'
' Helper method that generates an XML Schema.
'
'************************************************************************************
Private Function generateXMLSchema() As String
Dim generatedXmlSchema As String = "<?xml version=""1.0"" encoding=""utf-8""?> " & _
"<xs:schema attributeFormDefault=""unqualified"" " & _
"elementFormDefault=""qualified"" targetNamespace=""http://www.contoso.com/books"" " & _
"xmlns:xs=""http://www.w3.org/2001/XMLSchema""> " & _
"<xs:element name=""books""> " & _
"<xs:complexType> " & _
"<xs:sequence> " & _
"<xs:element maxOccurs=""unbounded"" name=""book""> " & _
"<xs:complexType> " & _
"<xs:sequence> " & _
"<xs:element name=""title"" type=""xs:string"" /> " & _
"<xs:element name=""price"" type=""xs:decimal"" /> " & _
"</xs:sequence> " & _
"<xs:attribute name=""genre"" type=""xs:string"" use=""required"" /> " & _
"<xs:attribute name=""publicationdate"" type=""xs:date"" use=""required"" /> " & _
"<xs:attribute name=""ISBN"" type=""xs:string"" use=""required"" /> " & _
"</xs:complexType> " & _
"</xs:element> " & _
"</xs:sequence> " & _
"</xs:complexType> " & _
"</xs:element> " & _
"</xs:schema> "
Return generatedXmlSchema
End Function
'************************************************************************************
'
' Helper method that gets a schema
'
'************************************************************************************
Private Function getSchema(ByVal generateSchema As Boolean) As XmlSchema
Dim xs As XmlSchemaSet = New XmlSchemaSet
Dim schema As XmlSchema
Try
schema = xs.Add("http://www.contoso.com/books", "booksData.xsd")
Catch ex As System.IO.FileNotFoundException
If generateSchema Then
Dim xmlSchemaString As String = generateXMLSchema()
Dim byteArray() As Byte = Encoding.UTF8.GetBytes(xmlSchemaString)
Dim stream As MemoryStream = New MemoryStream(byteArray)
Dim reader As XmlReader = XmlReader.Create(stream)
schema = xs.Add("http://www.contoso.com/books", reader)
Else
Return Nothing
End If
End Try
Return schema
End Function
'************************************************************************************
'
' Helper method to validate the XML against the schema.
'
'************************************************************************************
Private Sub validateXML(ByVal generateSchema As Boolean, ByVal doc As XmlDocument)
If (doc.Schemas.Count = 0) Then
' Helper method to retrieve schema.
Dim schema As XmlSchema = getSchema(generateSchema)
doc.Schemas.Add(schema)
End If
' Use an event handler to validate the XML node against the schema.
doc.Validate(AddressOf settings_ValidationEventHandler)
End Sub
'************************************************************************************
'
' Event handler that is raised when XML doesn't validate against the schema.
'
'************************************************************************************
Private Sub settings_ValidationEventHandler(ByVal sender As Object, ByVal e As System.Xml.Schema.ValidationEventArgs)
If (e.Severity = XmlSeverityType.Warning) Then
System.Windows.Forms.MessageBox.Show(("The following validation warning occurred: " & e.Message))
ElseIf (e.Severity = XmlSeverityType.Error) Then
System.Windows.Forms.MessageBox.Show(("The following critical validation errors occurred: " & e.Message))
Dim objectType As Type = sender.GetType
End If
End Sub
Дополнительные сведения см. в разделе "Проверка XML-документа" в DOM.
Навигация по дереву документа
Свойства можно использовать для навигации по XML-документу. Но прежде чем использовать любой из них, давайте быстро рассмотрим несколько терминов. Документ состоит из узлов. Каждый узел имеет один родительский узел непосредственно над ним. Единственный узел, у которого нет родительского узла, — это корневой узел документа, так как он находится на верхнем уровне. Большинство узлов могут иметь дочерние узлы, которые являются узлами непосредственно под ними. Узлы, которые находятся на том же уровне, являются братьями и сестрами.
В следующих примерах показано, как получить корневой узел, перейти к первому дочернему узлу корневого узла, получить доступ к любому из дочерних узлов, вернуться к родительскому узлу, а затем перейти по узлам с братом.
Начните с корневого узла
Этот пример получает корневой узел, а затем использует этот узел для вывода содержимого документа в консоль.
using System;
using System.IO;
using System.Xml;
public class Sample
{
public static void Main()
{
//Create the XmlDocument.
XmlDocument doc = new XmlDocument();
doc.LoadXml("<?xml version='1.0' ?>" +
"<book genre='novel' ISBN='1-861001-57-5'>" +
"<title>Pride And Prejudice</title>" +
"</book>");
//Display the document element.
Console.WriteLine(doc.DocumentElement.OuterXml);
}
}
Option Strict On
Option Explicit On
Imports System.Xml
Public Class ElementSample
Public Shared Sub Main()
'Create the XmlDocument.
Dim doc As New XmlDocument()
doc.LoadXml("<?xml version='1.0' ?>" &
"<book genre='novel' ISBN='1-861001-57-5'>" &
"<title>Pride And Prejudice</title>" &
"</book>")
'Display the document element.
Console.WriteLine(doc.DocumentElement.OuterXml)
End Sub
End Class
Получение дочерних узлов
В этом примере осуществляется переход к первому дочернему узлу корневого узла, а затем осуществляется перебор дочерних узлов этого узла, если они существуют.
using System;
using System.Xml;
public class Sample2
{
public static void Main()
{
XmlDocument doc = new XmlDocument();
doc.LoadXml("<book ISBN='1-861001-57-5'>" +
"<title>Pride And Prejudice</title>" +
"<price>19.95</price>" +
"</book>");
XmlNode root = doc.FirstChild;
//Display the contents of the child nodes.
if (root.HasChildNodes)
{
for (int i = 0; i < root.ChildNodes.Count; i++)
{
Console.WriteLine(root.ChildNodes[i].InnerText);
}
}
}
}
Option Strict
Option Explicit
Imports System.IO
Imports System.Xml
Public Class Sample
Public Shared Sub Main()
Dim doc As New XmlDocument()
doc.LoadXml("<book ISBN='1-861001-57-5'>" & _
"<title>Pride And Prejudice</title>" & _
"<price>19.95</price>" & _
"</book>")
Dim root As XmlNode = doc.FirstChild
'Display the contents of the child nodes.
If root.HasChildNodes Then
Dim i As Integer
For i = 0 To root.ChildNodes.Count - 1
Console.WriteLine(root.ChildNodes(i).InnerText)
Next i
End If
End Sub
End Class
Вернитесь к родительскому узлу
Используйте свойство ParentNode.
Ссылка на последний дочерний узел
В этом примере цена книги записывается в консоль. Узел цен является последним дочерним элементом узла книги.
using System;
using System.Xml;
public class Sample3
{
public static void Main()
{
XmlDocument doc = new XmlDocument();
doc.LoadXml("<book ISBN='1-861001-57-5'>" +
"<title>Pride And Prejudice</title>" +
"<price>19.95</price>" +
"</book>");
XmlNode root = doc.FirstChild;
Console.WriteLine("Display the price element...");
Console.WriteLine(root.LastChild.OuterXml);
}
}
Option Explicit On
Option Strict On
Imports System.Xml
Public Class LastChildSample
Public Shared Sub Main()
Dim doc As New XmlDocument()
doc.LoadXml("<book ISBN='1-861001-57-5'>" &
"<title>Pride And Prejudice</title>" &
"<price>19.95</price>" &
"</book>")
Dim root As XmlNode = doc.FirstChild
Console.WriteLine("Display the price element...")
Console.WriteLine(root.LastChild.OuterXml)
End Sub
End Class
Переход между братьями и сестрами
Этот пример перемещается из книги в книгу. Узлы книги являются братьями и сестрами друг к другу.
using System;
using System.Xml;
public class Sample4
{
public static void Main()
{
XmlDocument doc = new XmlDocument();
doc.Load("books.xml");
XmlNode currNode = doc.DocumentElement.FirstChild;
Console.WriteLine("First book...");
Console.WriteLine(currNode.OuterXml);
XmlNode nextNode = currNode.NextSibling;
Console.WriteLine("\r\nSecond book...");
Console.WriteLine(nextNode.OuterXml);
}
}
Imports System.Xml
Public Class NextSiblingSample
Public Shared Sub Main()
Dim doc As XmlDocument = New XmlDocument()
doc.Load("books.xml")
Dim currNode As XmlNode = doc.DocumentElement.FirstChild
Console.WriteLine("First book...")
Console.WriteLine(currNode.OuterXml)
Dim nextNode As XmlNode = currNode.NextSibling
Console.WriteLine(ControlChars.Lf + "Second book...")
Console.WriteLine(nextNode.OuterXml)
End Sub
End Class
Переход назад между братьями и сестрами
Этот пример перемещается назад от книги к книге.
using System;
using System.Xml;
public class Sample {
public static void Main() {
XmlDocument doc = new XmlDocument();
doc.Load("books.xml");
XmlNode lastNode = doc.DocumentElement.LastChild;
Console.WriteLine("Last book...");
Console.WriteLine(lastNode.OuterXml);
XmlNode prevNode = lastNode.PreviousSibling;
Console.WriteLine("\r\nPrevious book...");
Console.WriteLine(prevNode.OuterXml);
}
}
Imports System.Xml
Public Class Sample5
Public Shared Sub Main()
Dim doc As XmlDocument = New XmlDocument()
doc.Load("books.xml")
Dim lastNode As XmlNode = doc.DocumentElement.LastChild
Console.WriteLine("Last book...")
Console.WriteLine(lastNode.OuterXml)
Dim prevNode As XmlNode = lastNode.PreviousSibling
Console.WriteLine(ControlChars.Lf + "Previous book...")
Console.WriteLine(prevNode.OuterXml)
End Sub
End Class
Поиск узлов
Наиболее популярным способом поиска одного или нескольких узлов данных является использование строки запроса XPath, но есть и методы, которые не требуют одного.
Получите один узел
В этом примере книга находится с помощью номера ISBN.
public XmlNode GetBook(string uniqueAttribute, XmlDocument doc)
{
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("bk", "http://www.contoso.com/books");
string xPathString = "//bk:books/bk:book[@ISBN='" + uniqueAttribute + "']";
XmlNode xmlNode = doc.DocumentElement.SelectSingleNode(xPathString, nsmgr);
return xmlNode;
}
Public Function GetBook(ByVal uniqueAttribute As String, ByVal doc As XmlDocument) As XmlNode
Dim nsmgr As XmlNamespaceManager = New XmlNamespaceManager(doc.NameTable)
nsmgr.AddNamespace("bk", "http://www.contoso.com/books")
Dim xPathString As String = ("//bk:books/bk:book[@ISBN='" _
& (uniqueAttribute & "']"))
Dim xmlNode As XmlNode = doc.DocumentElement.SelectSingleNode(xPathString, nsmgr)
Return xmlNode
End Function
Строка, используемая в этом примере, — это запрос Xpath. Дополнительные примеры см. в примерах XPath.
Вы также можете использовать GetElementById для извлечения узлов. Чтобы использовать этот подход, необходимо определить идентификаторы в определениях типа документа вашего XML-файла.
После того как вы получаете узел, вы получаете значение атрибутов или дочерних узлов. В этом примере это делается с помощью узла книги.
public void GetBookInformation(ref string title, ref string ISBN, ref string publicationDate,
ref string price, ref string genre, XmlNode book)
{
XmlElement bookElement = (XmlElement)book;
// Get the attributes of a book.
XmlAttribute attr = bookElement.GetAttributeNode("ISBN");
ISBN = attr.InnerXml;
attr = bookElement.GetAttributeNode("genre");
genre = attr.InnerXml;
attr = bookElement.GetAttributeNode("publicationdate");
publicationDate = attr.InnerXml;
// Get the values of child elements of a book.
title = bookElement["title"].InnerText;
price = bookElement["price"].InnerText;
}
Public Sub GetBookInformation(ByRef title As String, ByRef ISBN As String, ByRef publicationDate As String, ByRef price As String, ByRef genre As String, ByVal book As XmlNode)
Dim bookElement As XmlElement = CType(book, XmlElement)
' Get the attributes of a book.
Dim attr As XmlAttribute = bookElement.GetAttributeNode("ISBN")
ISBN = attr.InnerXml
attr = bookElement.GetAttributeNode("genre")
genre = attr.InnerXml
attr = bookElement.GetAttributeNode("publicationdate")
publicationDate = attr.InnerXml
' Get the values of child elements of a book.
title = bookElement("title").InnerText
price = bookElement("price").InnerText
End Sub
Получите коллекцию узлов
В этом примере выбираются все книги, где фамилия автора является Austen, а затем изменяет цену этих книг.
using System;
using System.Xml;
public class Sample6
{
public static void Main()
{
XmlDocument doc = new XmlDocument();
doc.Load("booksort.xml");
XmlNodeList nodeList;
XmlNode root = doc.DocumentElement;
nodeList = root.SelectNodes("descendant::book[author/last-name='Austen']");
//Change the price on the books.
foreach (XmlNode book in nodeList)
{
book.LastChild.InnerText = "15.95";
}
Console.WriteLine("Display the modified XML document....");
doc.Save(Console.Out);
}
}
Imports System.IO
Imports System.Xml
public class Sample
public shared sub Main()
'Create the XmlDocument.
Dim doc as XmlDocument = new XmlDocument()
doc.Load("booksort.xml")
Dim book as XmlNode
Dim nodeList as XmlNodeList
Dim root as XmlNode = doc.DocumentElement
nodeList=root.SelectNodes("descendant::book[author/last-name='Austen']")
'Change the price on the books.
for each book in nodeList
book.LastChild.InnerText="15.95"
next
Console.WriteLine("Display the modified XML document....")
doc.Save(Console.Out)
end sub
end class
Вы также можете получить коллекцию узлов с помощью имени узла. Например, в этом примере получается коллекция всех названий книг.
using System;
using System.Xml;
public class Sample1
{
public static void Main()
{
//Create the XmlDocument.
XmlDocument doc = new XmlDocument();
doc.Load("books.xml");
//Display all the book titles.
XmlNodeList elemList = doc.GetElementsByTagName("title");
for (int i = 0; i < elemList.Count; i++)
{
Console.WriteLine(elemList[i].InnerXml);
}
}
}
Option Explicit On
Option Strict On
Imports System.Xml
Public Class TagSample
Public Shared Sub Main()
'Create the XmlDocument.
Dim doc As New XmlDocument()
doc.Load("books.xml")
'Display all the book titles.
Dim elemList As XmlNodeList = doc.GetElementsByTagName("title")
Dim i As Integer
For i = 0 To elemList.Count - 1
Console.WriteLine(elemList(i).InnerXml)
Next i
End Sub
End Class
Дополнительные сведения см. в разделе "Выбор узлов с помощью XPath Navigation".
Изменение узлов
В этом примере редактируется книжный узел и его атрибуты.
public void editBook(string title, string ISBN, string publicationDate,
string genre, string price, XmlNode book, bool validateNode, bool generateSchema)
{
XmlElement bookElement = (XmlElement)book;
// Get the attributes of a book.
bookElement.SetAttribute("ISBN", ISBN);
bookElement.SetAttribute("genre", genre);
bookElement.SetAttribute("publicationdate", publicationDate);
// Get the values of child elements of a book.
bookElement["title"].InnerText = title;
bookElement["price"].InnerText = price;
if (validateNode)
{
validateXML(generateSchema, bookElement.OwnerDocument);
}
}
Public Sub editBook(ByVal title As String, ByVal ISBN As String,
ByVal publicationDate As String, ByVal genre As String,
ByVal price As String, ByVal book As XmlNode, ByVal validateNode As Boolean,
ByVal generateSchema As Boolean)
Dim bookElement As XmlElement = CType(book, XmlElement)
' Get the attributes of a book.
bookElement.SetAttribute("ISBN", ISBN)
bookElement.SetAttribute("genre", genre)
bookElement.SetAttribute("publicationdate", publicationDate)
' Get the values of child elements of a book.
bookElement("title").InnerText = title
bookElement("price").InnerText = price
If validateNode Then
validateXML(generateSchema, bookElement.OwnerDocument)
End If
End Sub
Дополнительные сведения см. в разделе "Изменение узлов, содержимого и значений" в XML-документе.
Добавление узлов
Чтобы добавить узел, используйте CreateElement метод или CreateNode метод.
Чтобы добавить узел данных, например книгу, используйте метод CreateElement.
Для любого другого типа узла, например, примечания, узла пробелов или узла CDATA, используйте метод CreateNode.
В этом примере создается узел книги, добавляется атрибуты к этому узлу, а затем добавляется этот узел в документ.
public XmlElement AddNewBook(string genre, string ISBN, string misc,
string title, string price, XmlDocument doc)
{
// Create a new book element.
XmlElement bookElement = doc.CreateElement("book", "http://www.contoso.com/books");
// Create attributes for book and append them to the book element.
XmlAttribute attribute = doc.CreateAttribute("genre");
attribute.Value = genre;
bookElement.Attributes.Append(attribute);
attribute = doc.CreateAttribute("ISBN");
attribute.Value = ISBN;
bookElement.Attributes.Append(attribute);
attribute = doc.CreateAttribute("publicationdate");
attribute.Value = misc;
bookElement.Attributes.Append(attribute);
// Create and append a child element for the title of the book.
XmlElement titleElement = doc.CreateElement("title");
titleElement.InnerText = title;
bookElement.AppendChild(titleElement);
// Introduce a newline character so that XML is nicely formatted.
bookElement.InnerXml =
bookElement.InnerXml.Replace(titleElement.OuterXml,
"\n " + titleElement.OuterXml + " \n ");
// Create and append a child element for the price of the book.
XmlElement priceElement = doc.CreateElement("price");
priceElement.InnerText= price;
bookElement.AppendChild(priceElement);
// Introduce a newline character so that XML is nicely formatted.
bookElement.InnerXml =
bookElement.InnerXml.Replace(priceElement.OuterXml, priceElement.OuterXml + " \n ");
return bookElement;
}
Public Function AddNewBook(ByVal genre As String, ByVal ISBN As String, ByVal misc As String, ByVal title As String, ByVal price As String, ByVal doc As XmlDocument) As XmlElement
' Create a new book element.
Dim bookElement As XmlElement = doc.CreateElement("book", "http://www.contoso.com/books")
' Create attributes for book and append them to the book element.
Dim attribute As XmlAttribute = doc.CreateAttribute("genre")
attribute.Value = genre
bookElement.Attributes.Append(attribute)
attribute = doc.CreateAttribute("ISBN")
attribute.Value = ISBN
bookElement.Attributes.Append(attribute)
attribute = doc.CreateAttribute("publicationdate")
attribute.Value = misc
bookElement.Attributes.Append(attribute)
' Create and append a child element for the title of the book.
Dim titleElement As XmlElement = doc.CreateElement("title")
titleElement.InnerText = title
bookElement.AppendChild(titleElement)
' Introduce a newline character so that XML is nicely formatted.
bookElement.InnerXml = bookElement.InnerXml.Replace(titleElement.OuterXml, _
"\n " & titleElement.OuterXml & " " & ControlChars.NewLine + " ")
' Create and append a child element for the price of the book.
Dim priceElement As XmlElement = doc.CreateElement("price")
priceElement.InnerText = price
bookElement.AppendChild(priceElement)
' Introduce a newline character so that XML is nicely formatted.
bookElement.InnerXml = bookElement.InnerXml.Replace(priceElement.OuterXml,
(priceElement.OuterXml & " " & ControlChars.NewLine & " "))
Return bookElement
End Function
Дополнительные сведения см. в разделе "Вставка узлов" в XML-документ.
Удалить узлы
Чтобы удалить узел, используйте RemoveChild метод.
В этом примере удаляется книга из документа и все пробелы, которые находятся прямо перед узлом книги.
public void deleteBook(XmlNode book)
{
XmlNode prevNode = book.PreviousSibling;
book.OwnerDocument.DocumentElement.RemoveChild(book);
if (prevNode.NodeType == XmlNodeType.Whitespace ||
prevNode.NodeType == XmlNodeType.SignificantWhitespace)
{
prevNode.OwnerDocument.DocumentElement.RemoveChild(prevNode);
}
}
Public Sub deleteBook(ByVal book As XmlNode)
Dim prevNode As XmlNode = book.PreviousSibling
book.OwnerDocument.DocumentElement.RemoveChild(book)
If ((prevNode.NodeType = XmlNodeType.Whitespace) _
OrElse (prevNode.NodeType = XmlNodeType.SignificantWhitespace)) Then
prevNode.OwnerDocument.DocumentElement.RemoveChild(prevNode)
End If
End Sub
Дополнительные сведения см. в статье об удалении узлов, содержимого и значений из XML-документа.
Размещение узлов
Вы можете выбрать, где узел будет находиться в вашем документе, используя методы InsertBefore и InsertAfter.
В этом примере показаны два вспомогательных метода. Один из них перемещает узел на более высокую позицию в списке. Другой перемещает узел ниже.
Эти методы можно использовать в приложении, которое позволяет пользователям перемещать книги вверх и вниз в списке книг. Когда пользователь выбирает книгу и нажимает кнопку вверх или вниз, код может вызывать такие методы, как эти, чтобы разместить соответствующий узел книги до или после других узлов книги.
//************************************************************************************
//
// Summary: Move elements up in the XML.
//
//
//************************************************************************************
public void MoveElementUp(XmlNode book)
{
XmlNode previousNode = book.PreviousSibling;
while (previousNode != null && (previousNode.NodeType != XmlNodeType.Element))
{
previousNode = previousNode.PreviousSibling;
}
if (previousNode != null)
{
XmlNode newLineNode = book.NextSibling;
book.OwnerDocument.DocumentElement.RemoveChild(book);
if (newLineNode.NodeType == XmlNodeType.Whitespace |
newLineNode.NodeType == XmlNodeType.SignificantWhitespace)
{
newLineNode.OwnerDocument.DocumentElement.RemoveChild(newLineNode);
}
InsertBookElement((XmlElement)book, Constants.positionAbove,
previousNode, false, false);
}
}
//************************************************************************************
//
// Summary: Move elements down in the XML.
//
//
//************************************************************************************
public void MoveElementDown(XmlNode book)
{
// Walk backwards until we find an element - ignore text nodes
XmlNode NextNode = book.NextSibling;
while (NextNode != null && (NextNode.NodeType != XmlNodeType.Element))
{
NextNode = NextNode.NextSibling;
}
if (NextNode != null)
{
XmlNode newLineNode = book.PreviousSibling;
book.OwnerDocument.DocumentElement.RemoveChild(book);
if (newLineNode.NodeType == XmlNodeType.Whitespace |
newLineNode.NodeType == XmlNodeType.SignificantWhitespace)
{
newLineNode.OwnerDocument.DocumentElement.RemoveChild(newLineNode);
}
InsertBookElement((XmlElement)book, Constants.positionBelow,
NextNode, false, false);
}
}
'************************************************************************************
'
' Summary: Move elements up in the XML.
'
'
'************************************************************************************
Public Sub MoveElementUp(ByVal book As XmlNode)
Dim previousNode As XmlNode = book.PreviousSibling
While ((Not (previousNode) Is Nothing) _
AndAlso (previousNode.NodeType <> XmlNodeType.Element))
previousNode = previousNode.PreviousSibling
End While
If (Not (previousNode) Is Nothing) Then
Dim newLineNode As XmlNode = book.NextSibling
book.OwnerDocument.DocumentElement.RemoveChild(book)
If ((newLineNode.NodeType = XmlNodeType.Whitespace) _
Or (newLineNode.NodeType = XmlNodeType.SignificantWhitespace)) Then
newLineNode.OwnerDocument.DocumentElement.RemoveChild(newLineNode)
End If
InsertBookElement(CType(book, XmlElement), Constants.positionAbove,
previousNode, False, False)
End If
End Sub
'************************************************************************************
'
' Summary: Move elements down in the XML.
'
'
'************************************************************************************
Public Sub MoveElementDown(ByVal book As XmlNode)
' Walk backwards until we find an element - ignore text nodes
Dim NextNode As XmlNode = book.NextSibling
While ((Not (NextNode) Is Nothing) _
AndAlso (NextNode.NodeType <> XmlNodeType.Element))
NextNode = NextNode.NextSibling
End While
If (Not (NextNode) Is Nothing) Then
Dim newLineNode As XmlNode = book.PreviousSibling
book.OwnerDocument.DocumentElement.RemoveChild(book)
If ((newLineNode.NodeType = XmlNodeType.Whitespace) _
Or (newLineNode.NodeType = XmlNodeType.SignificantWhitespace)) Then
newLineNode.OwnerDocument.DocumentElement.RemoveChild(newLineNode)
End If
InsertBookElement(CType(book, XmlElement), Constants.positionBelow,
NextNode, False, False)
End If
End Sub
Конструкторы
| Имя | Описание |
|---|---|
| XmlDocument() |
Инициализирует новый экземпляр класса XmlDocument. |
| XmlDocument(XmlImplementation) |
Инициализирует новый экземпляр |
| XmlDocument(XmlNameTable) |
Инициализирует новый экземпляр |
Свойства
| Имя | Описание |
|---|---|
| Attributes |
XmlAttributeCollection Возвращает атрибуты этого узла. (Унаследовано от XmlNode) |
| BaseURI |
Возвращает базовый универсальный код ресурса (URI) текущего узла. |
| ChildNodes |
Возвращает все дочерние узлы узла. (Унаследовано от XmlNode) |
| DocumentElement |
Возвращает корневой каталог XmlElement для документа. |
| DocumentType |
Возвращает узел, содержащий объявление DOCTYPE. |
| FirstChild |
Возвращает первый дочерний элемент узла. (Унаследовано от XmlNode) |
| HasChildNodes |
Возвращает значение, указывающее, имеет ли этот узел дочерние узлы. (Унаследовано от XmlNode) |
| Implementation |
XmlImplementation Возвращает объект для текущего документа. |
| InnerText |
Вызывается InvalidOperationException во всех случаях. |
| InnerText |
Возвращает или задает сцепленные значения узла и всех дочерних узлов. (Унаследовано от XmlNode) |
| InnerXml |
Получает или задает разметку, представляющую дочерние элементы текущего узла. |
| IsReadOnly |
Возвращает значение, указывающее, доступен ли текущий узел только для чтения. |
| Item[String, String] |
Возвращает первый дочерний элемент с указанным LocalName и NamespaceURI. (Унаследовано от XmlNode) |
| Item[String] |
Возвращает первый дочерний элемент с указанным Nameэлементом. (Унаследовано от XmlNode) |
| LastChild |
Возвращает последний дочерний элемент узла. (Унаследовано от XmlNode) |
| LocalName |
Возвращает локальное имя узла. |
| Name |
Возвращает полное имя узла. |
| NamespaceURI |
Возвращает универсальный код ресурса (URI) пространства имен этого узла. (Унаследовано от XmlNode) |
| NameTable |
Возвращает связанную XmlNameTable с этой реализацией. |
| NextSibling |
Возвращает узел сразу после этого узла. (Унаследовано от XmlNode) |
| NodeType |
Возвращает тип текущего узла. |
| OuterXml |
Получает разметку, содержащую этот узел и все дочерние узлы. (Унаследовано от XmlNode) |
| OwnerDocument |
Возвращает значение XmlDocument , к которому принадлежит текущий узел. |
| ParentNode |
Получает родительский узел этого узла (для узлов, которые могут иметь родители). |
| ParentNode |
Возвращает родительский элемент этого узла (для узлов, которые могут иметь родители). (Унаследовано от XmlNode) |
| Prefix |
Возвращает или задает префикс пространства имен этого узла. (Унаследовано от XmlNode) |
| PreserveWhitespace |
Возвращает или задает значение, указывающее, следует ли сохранять пробелы в содержимом элемента. |
| PreviousSibling |
Возвращает узел, непосредственно предшествующий этому узлу. (Унаследовано от XmlNode) |
| PreviousText |
Возвращает текстовый узел, который сразу же предшествует этому узлу. (Унаследовано от XmlNode) |
| SchemaInfo |
ВозвращаетValidation-Infoset после схемы (PSVI) узла. |
| Schemas |
Возвращает или задает объект, связанный XmlSchemaSet с этим XmlDocument. |
| Value |
Возвращает или задает значение узла. (Унаследовано от XmlNode) |
| XmlResolver |
XmlResolver Задает для разрешения внешних ресурсов. |
Методы
| Имя | Описание |
|---|---|
| AppendChild(XmlNode) |
Добавляет указанный узел в конец списка дочерних узлов этого узла. (Унаследовано от XmlNode) |
| Clone() |
Создает дубликат этого узла. (Унаследовано от XmlNode) |
| CloneNode(Boolean) |
Создает дубликат этого узла. |
| CreateAttribute(String, String, String) |
XmlAttribute Создает объект с указанным Prefix, LocalNameи NamespaceURI. |
| CreateAttribute(String, String) |
Создает указанное XmlAttribute полное имя и NamespaceURI. |
| CreateAttribute(String) |
Создает объект XmlAttribute с указанным Name. |
| CreateCDataSection(String) |
XmlCDataSection Создает содержащий указанные данные. |
| CreateComment(String) |
XmlComment Создает содержащий указанные данные. |
| CreateDefaultAttribute(String, String, String) |
Создает атрибут по умолчанию с указанным префиксом, локальным именем и URI пространства имен. |
| CreateDocumentFragment() |
Создает объект XmlDocumentFragment. |
| CreateDocumentType(String, String, String, String) |
Возвращает новый XmlDocumentType объект. |
| CreateElement(String, String, String) |
Создает элемент с указанным Prefix, LocalNameи NamespaceURI. |
| CreateElement(String, String) |
XmlElement Создает имя с полным именем и NamespaceURI. |
| CreateElement(String) |
Создает элемент с указанным именем. |
| CreateEntityReference(String) |
XmlEntityReference Создает имя с указанным именем. |
| CreateNavigator() |
Создает новый XPathNavigator объект для навигации по этому документу. |
| CreateNavigator() |
Создает объект для навигации по этому объекту XPathNavigator . (Унаследовано от XmlNode) |
| CreateNavigator(XmlNode) |
XPathNavigator Создает объект для навигации по указанному документуXmlNode. |
| CreateNode(String, String, String) |
Создает объект с указанным типом XmlNode узла и NameNamespaceURI. |
| CreateNode(XmlNodeType, String, String, String) |
XmlNode Создает объект с указанным XmlNodeType, Prefixи NameNamespaceURI. |
| CreateNode(XmlNodeType, String, String) |
XmlNode Создает объект с указанным XmlNodeType, Nameи NamespaceURI. |
| CreateProcessingInstruction(String, String) |
XmlProcessingInstruction Создает имя и данные с указанным именем и данными. |
| CreateSignificantWhitespace(String) |
XmlSignificantWhitespace Создает узел. |
| CreateTextNode(String) |
Создает указанный XmlText текст. |
| CreateWhitespace(String) |
XmlWhitespace Создает узел. |
| CreateXmlDeclaration(String, String, String) |
XmlDeclaration Создает узел с указанными значениями. |
| Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
| GetElementById(String) |
Возвращает указанный XmlElement идентификатор. |
| GetElementsByTagName(String, String) |
XmlNodeList Возвращает список всех потомков, которые соответствуют указанному LocalName иNamespaceURI. |
| GetElementsByTagName(String) |
XmlNodeList Возвращает список всех потомков, которые соответствуют указанному.Name |
| GetEnumerator() |
Возвращает перечислитель, который выполняет итерацию через дочерние узлы в текущем узле. (Унаследовано от XmlNode) |
| GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
| GetNamespaceOfPrefix(String) |
Ищет ближайшее объявление xmlns для заданного префикса, который находится в области текущего узла и возвращает URI пространства имен в объявлении. (Унаследовано от XmlNode) |
| GetPrefixOfNamespace(String) |
Ищет ближайшее объявление xmlns для заданного URI пространства имен, который находится в области текущего узла и возвращает префикс, определенный в этом объявлении. (Унаследовано от XmlNode) |
| GetType() |
Возвращает Type текущего экземпляра. (Унаследовано от Object) |
| ImportNode(XmlNode, Boolean) |
Импортирует узел из другого документа в текущий документ. |
| InsertAfter(XmlNode, XmlNode) |
Вставляет указанный узел сразу после указанного эталонного узла. (Унаследовано от XmlNode) |
| InsertBefore(XmlNode, XmlNode) |
Вставляет указанный узел непосредственно перед указанным эталонным узлом. (Унаследовано от XmlNode) |
| Load(Stream) |
Загружает XML-документ из указанного потока. |
| Load(String) |
Загружает XML-документ из указанного URL-адреса. |
| Load(TextReader) |
Загружает XML-документ из указанного TextReader. |
| Load(XmlReader) |
Загружает XML-документ из указанного XmlReader. |
| LoadXml(String) |
Загружает XML-документ из указанной строки. |
| MemberwiseClone() |
Создает неглубокую копию текущей Object. (Унаследовано от Object) |
| Normalize() |
Помещает все узлы XmlText в полную глубину вложенного дерева под этим xmlNode в "обычную" форму, где только разметка (т. е. теги, комментарии, инструкции по обработке, разделы CDATA и ссылки на сущности) отделяет узлы XmlText, то есть нет смежных узлов XmlText. (Унаследовано от XmlNode) |
| PrependChild(XmlNode) |
Добавляет указанный узел в начало списка дочерних узлов для этого узла. (Унаследовано от XmlNode) |
| ReadNode(XmlReader) |
Создает объект на основе сведений XmlNode в объекте XmlReader. Средство чтения должно находиться на узле или атрибуте. |
| RemoveAll() |
Удаляет все дочерние узлы и/или атрибуты текущего узла. (Унаследовано от XmlNode) |
| RemoveChild(XmlNode) |
Удаляет указанный дочерний узел. (Унаследовано от XmlNode) |
| ReplaceChild(XmlNode, XmlNode) |
Заменяет дочерний узел |
| Save(Stream) |
Сохраняет XML-документ в указанном потоке. |
| Save(String) |
Сохраняет XML-документ в указанный файл. Если указанный файл существует, этот метод перезаписывает его. |
| Save(TextWriter) |
Сохраняет XML-документ в указанный TextWriter. |
| Save(XmlWriter) |
Сохраняет XML-документ в указанный XmlWriter. |
| SelectNodes(String, XmlNamespaceManager) |
Выбирает список узлов, соответствующих выражению XPath. Все префиксы, найденные в выражении XPath, разрешаются с помощью предоставленного XmlNamespaceManager. (Унаследовано от XmlNode) |
| SelectNodes(String) |
Выбирает список узлов, соответствующих выражению XPath. (Унаследовано от XmlNode) |
| SelectSingleNode(String, XmlNamespaceManager) |
Выбирает первое |
| SelectSingleNode(String) |
Выбирает первое |
| Supports(String, String) |
Проверяет, реализует ли реализация DOM определенную функцию. (Унаследовано от XmlNode) |
| ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |
| Validate(ValidationEventHandler, XmlNode) |
Проверяет объект, указанный XmlNode в схемах языка определения XML-схемы (XSD) в свойстве Schemas . |
| Validate(ValidationEventHandler) |
XmlDocument Проверяет соответствие схемам языка определения схемы XML (XSD), содержащихся в свойствеSchemas. |
| WriteContentTo(XmlWriter) |
Сохраняет все дочерние элементы |
| WriteTo(XmlWriter) |
Сохраняет |
События
| Имя | Описание |
|---|---|
| NodeChanged |
Происходит, когда Value узел, принадлежащий этому документу, был изменен. |
| NodeChanging |
Происходит, когда Value узел, принадлежащий этому документу, будет изменен. |
| NodeInserted |
Происходит, когда узел, принадлежащий этому документу, был вставлен в другой узел. |
| NodeInserting |
Происходит, когда узел, принадлежащий этому документу, будет вставлен в другой узел. |
| NodeRemoved |
Происходит, когда узел, принадлежащий этому документу, был удален из родительского элемента. |
| NodeRemoving |
Происходит, когда узел, принадлежащий этому документу, будет удален из документа. |
Явные реализации интерфейса
| Имя | Описание |
|---|---|
| ICloneable.Clone() |
Описание этого элемента см. в разделе Clone(). (Унаследовано от XmlNode) |
| IEnumerable.GetEnumerator() |
Описание этого элемента см. в разделе GetEnumerator(). (Унаследовано от XmlNode) |
Методы расширения
| Имя | Описание |
|---|---|
| AsParallel(IEnumerable) |
Включает параллелизацию запроса. |
| AsQueryable(IEnumerable) |
Преобразует IEnumerable в IQueryable. |
| Cast<TResult>(IEnumerable) |
Приведение элементов IEnumerable к указанному типу. |
| CreateNavigator(XmlDocument, XmlNode) |
Создает объект навигатора XPath для навигации по указанному документу, расположенного на указанном узле. |
| CreateNavigator(XmlDocument) |
Создает новый объект навигатора XPath для навигации по указанному документу. |
| CreateNavigator(XmlNode) |
Создает навигатор XPath для навигации по указанному узлу. |
| OfType<TResult>(IEnumerable) |
Фильтрует элементы IEnumerable на основе указанного типа. |
| SelectNodes(XmlNode, String, XmlNamespaceManager) |
Выбирает список узлов, соответствующих указанному выражению XPath. Все префиксы, найденные в выражении XPath, разрешаются с помощью предоставленного диспетчера пространства имен. |
| SelectNodes(XmlNode, String) |
Выбирает список узлов, соответствующих указанному выражению XPath. |
| SelectSingleNode(XmlNode, String, XmlNamespaceManager) |
Выбирает первый узел, соответствующий выражению XPath. Все префиксы, найденные в выражении XPath, разрешаются с помощью предоставленного диспетчера пространства имен. |
| SelectSingleNode(XmlNode, String) |
Выбирает первый узел, соответствующий выражению XPath. |
| ToXPathNavigable(XmlNode) |
Создает экземпляр, используемый IXPathNavigable для создания навигаторов. |