XPathNavigator Kullanarak Öznitelik ve Ad Alanı Düğümünde Gezinme
XPathNavigator sınıfı, bir veya XmlDocument nesnesindeki düğüm kümelerinde gezinmek için XPathNavigator Kullanarak Düğüm Kümesi Gezintisi konusunda bulunan ilk küme olan iki gezinti yöntemi kümesiXPathDocument sağlar. Bu konuda açıklanan ikinci küme, bir XPathDocument veya XmlDocument nesnesindeki öznitelik ve ad alanı düğümlerinde gezinmek için kullanılır.
Öznitelik Düğümü Gezintisi
Öznitelikler, öğenin alt öğeleri değil, bir öğenin özellikleridir. Eşdüzey, üst ve alt düğümlerde gezinmek için kullanılan sınıfın XPathNavigator yöntemleri nedeniyle bu ayrım önemlidir.
Örneğin, MoveToPrevious ve MoveToNext yöntemleri bir öğeden bir özniteliğe veya öznitelikler arasında gezinmek için kullanılmaz. Bunun yerine özniteliklerin farklı gezinti yöntemleri vardır.
Sınıfın öznitelik gezinti yöntemleri aşağıdadır XPathNavigator .
Geçerli düğüm bir öğe olduğunda, öğesiyle ilişkili öznitelikler olup olmadığını görmek için özelliğini kullanabilirsiniz HasAttributes . Bir öğenin öznitelikleri olduğu bilindikten sonra, özniteliklere erişmek için birden çok yöntem vardır. öğesinden tek bir öznitelik almak için yöntemini kullanın GetAttribute . öğesini belirli bir özniteliğe XPathNavigator taşımak için yöntemini kullanın MoveToAttribute . Ayrıca yöntemini kullanarak MoveToFirstAttribute bir öğenin her özniteliğini yineleyebilir ve ardından yöntemine birden çok çağrı yapabilirsiniz MoveToNextAttribute .
Not
XPathNavigator Nesne bir öznitelik veya ad alanı düğümünde konumlandırıldığında , MoveToChildMoveToFirst, , MoveToFirstChild, MoveToFollowing, MoveToNextMoveToIdve MoveToPrevious yöntemleri her zaman döndürür false
ve konumu XPathNavigatorüzerinde hiçbir etkisi yoktur. Özel durumlar , MoveToParentve MoveToRoot yöntemleridirMoveTo.
Ad Alanı Düğümü Gezintisi
Her öğenin, öğe kapsamında bir ad alanı URI'sine bağlı her ayrı ad alanı ön eki için bir ad alanı düğümü kümesi (her XML belgesinde örtük olarak bildirilen ad alanına bağlı http://www.w3.org/XML/1998/namespace
XML ön eki dahil) ve öğe kapsamındaysa varsayılan ad alanı için bir ad alanı düğümü kümesi vardır. Bu ad alanı düğümler üst öğedir; Ancak, bir ad alanı düğümü alt öğesi üst öğesi değil.
Özniteliklerde olduğu gibi ve MoveToNext yöntemleri bir MoveToPrevious öğeden ad alanı düğümüne veya ad alanı düğümleri arasında gezinmek için kullanılmaz. Bunun yerine, ad alanı düğümlerinin farklı gezinti yöntemleri vardır.
Sınıfın ad alanı gezinti yöntemleri aşağıdadır XPathNavigator .
XML belgesindeki herhangi bir öğe için kapsamda her zaman en az bir ad alanı düğümü vardır. Bu, ön ek xml
ve ad alanı URI'sine sahip ad alanı düğümüdür http://www.w3.org/XML/1998/namespace
. Belirli bir ön ek verilen kapsamda bir ad alanı URI'sini GetNamespace almak için yöntemini kullanın. Nesneyi belirli bir ad alanı düğümüne taşımak XPathNavigator için yöntemini kullanın MoveToNamespace . Ayrıca yöntemini ve ardından yöntemine yapılan birden çok çağrıyı MoveToFirstNamespace kullanarak bir öğenin kapsamındaki her ad alanı düğümü üzerinde MoveToNextNamespace yineleme yapabilirsiniz.
Not
XPathNavigator Nesne bir öznitelik veya ad alanı düğümünde konumlandırıldığında , MoveToChildMoveToFirst, , MoveToFirstChild, MoveToFollowing, MoveToNextMoveToIdve MoveToPrevious yöntemleri her zaman döndürür false
ve konumu XPathNavigatorüzerinde hiçbir etkisi yoktur. Özel durumlar , MoveToParentve MoveToRoot yöntemleridirMoveTo.
XPathNamespaceScope Numaralandırması
Ad alanı düğümlerinde MoveToFirstNamespace gezinirken ve MoveToNextNamespace yöntemleri bir XPathNamespaceScope parametreyle çağrılabilir. Bu yöntemler, parametresiz olarak adlandırılan karşılıklarından farklı davranır. Sabit XPathNamespaceScope listesi , ExcludeXmlveya Localdeğerlerine Allsahiptir.
Aşağıdaki örnekler, bir XML belgesindeki çeşitli kapsamlarda ve MoveToNextNamespace yöntemleri tarafından hangi ad alanlarının MoveToFirstNamespace döndürüleceğini gösterir.
<root>
<element1 xmlns="http://www.contoso.com" xmlns:books="http://www.contoso.com/books">
<element2 />
</element1>
</root>
Ad alanı dizisi (yöntemi çağrıldıktan MoveToFirstNamespace sonra üzerine konumlandırılan ad alanı XPathNavigator ve ardından yönteme MoveToNextNamespace yapılan bir dizi çağrı) aşağıdaki gibidir.
üzerinde
element2
konumlandırıldığında:xmlns:books="http://www.contoso.com/books"
,xmlns="http://www.contoso.com"
vexmlns:xml="http://www.w3.org/XML/1998/namespace"
.üzerinde
element1
konumlandırıldığında:xmlns:books="http://www.contoso.com/books"
,xmlns="http://www.contoso.com"
vexmlns:xml="http://www.w3.org/XML/1998/namespace"
.konumuna
root
yerleştirildiğinde:xmlns:xml="http://www.w3.org/XML/1998/namespace".
Not
XPathNavigator sınıfı, ad alanı düğümlerini ters belge sırasına göre döndürür. Bu nedenle, MoveToFirstNamespace temelde geçerli kapsamdaki son ad alanı düğümüne geçer.
Aşağıdaki örnekler, bir XML belgesindeki MoveToFirstNamespace çeşitli kapsamlarda belirtilen numaralandırmaya sahip ve MoveToNextNamespace yöntemleri tarafından hangi ad alanlarının XPathNamespaceScope döndürüleceğini gösterir.
<root xmlns="http://www.contoso.com" xmlns:a="http://www.contoso.com/a" xmlns:b="http://www.contoso.com/b">
<child1 xmlns="" xmlns:a="urn:a">
<child2 xmlns:c="urn:c" />
</child1>
</root>
üzerinde child2
konumlandırıldığında, ad alanı dizisi (yöntemi çağrıldıktan MoveToFirstNamespace sonra üzerine konumlandırılan ad alanı XPathNavigator ve ardından yönteme MoveToNextNamespace bir dizi çağrı yapılır) aşağıdaki gibidir.
All:
xmlns:c="urn:c"
,xmlns:a="urn:a"
,xmlns=""
,xmlns:b="http://www.contoso.com/b"
, ,xmlns:a="http://www.contoso.com/a"
,xmlns="http://www.contoso.com"
vexmlns:xml="http://www.w3.org/XML/1998/namespace"
.ExcludeXml:
xmlns:c="urn:c"
,xmlns:a="urn:a"
,xmlns=""
,xmlns:b="http://www.contoso.com/b"
,xmlns:a="http://www.contoso.com/a"
vexmlns="http://www.contoso.com"
.Local: .
xmlns:c="urn:c"
Not
XPathNavigator sınıfı, ad alanı düğümlerini ters belge sırasına göre döndürür. Bu nedenle, MoveToFirstNamespace temelde geçerli kapsamdaki son ad alanı düğümüne geçer.