XPathNavigator.NavigatorComparer Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
IEqualityComparer Получает использование для сравнения XPathNavigator равенства объектов.
public:
static property System::Collections::IEqualityComparer ^ NavigatorComparer { System::Collections::IEqualityComparer ^ get(); };
public static System.Collections.IEqualityComparer NavigatorComparer { get; }
static member NavigatorComparer : System.Collections.IEqualityComparer
Public Shared ReadOnly Property NavigatorComparer As IEqualityComparer
Значение свойства
Используется IEqualityComparer для сравнения XPathNavigator равенства объектов.
Примеры
В следующем примере показано использование NavigatorComparer свойства.
XPathDocument document = new XPathDocument("books.xml");
XPathNavigator navigator = document.CreateNavigator();
Hashtable table = new Hashtable(XPathNavigator.NavigatorComparer);
// Add nodes to the Hashtable.
foreach (XPathNavigator navigator2 in navigator.Select("//book"))
{
object value = navigator2.Evaluate("string(./title)");
table.Add(navigator2.Clone(), value);
Console.WriteLine("Added book with title {0}", value);
}
Console.WriteLine(table.Count);
Console.WriteLine("Does the Hashtable have the book \"The Confidence Man\"?");
Console.WriteLine(table.Contains(navigator.SelectSingleNode("//book[title='The Confidence Man']")));
Dim document As XPathDocument = New XPathDocument("books.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()
Dim table As Hashtable = New Hashtable(XPathNavigator.NavigatorComparer)
' Add nodes to the Hashtable.
For Each navigator2 As XPathNavigator In navigator.Select("//book")
Dim value As Object = navigator2.Evaluate("string(./title)")
table.Add(navigator2.Clone(), value)
Console.WriteLine("Added book with title {0}", value)
Next
Console.WriteLine(table.Count)
Console.WriteLine("Does the Hashtable have the book 'The Confidence Man'?")
Console.WriteLine(table.Contains(navigator.SelectSingleNode("//book[title='The Confidence Man']")))
Пример принимает books.xml файл в качестве входных данных.
<?xml version="1.0" encoding="utf-8" ?>
<bookstore>
<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>
Комментарии
Свойство NavigatorComparer позволяет XPathNavigator сравнивать объекты на основе позиции, а не ссылки на объект. Методы ComparePosition , Equals реализованные этим классом, основаны на положении объектов, XPathNavigator переданных в качестве параметров. Метод, GetHashCode реализованный этим классом, использует свойства узла, например его локальное имя и универсальный код ресурса (URI) пространства имен для создания хэш-кода узла.