Attribútum- és névtércsomópont-navigáció az XPathNavigator használatával
Az XPathNavigator osztály két navigációs módszert biztosít, az első készlet, amely az XPathNavigator-alapú csomópontkészlet-navigáció témakörében található, egy vagy XmlDocument több XPathDocument objektum csomópontkészleteinek navigálására szolgál. A jelen témakörben ismertetett második készlet az attribútum- és névtércsomópontok közötti navigálásra szolgál egy vagy XmlDocument több XPathDocument objektumban.
Attribútumcsomópont navigációja
Az attribútumok egy elem tulajdonságai, nem pedig egy elem gyermekei. Ez a megkülönböztetés a testvér-, szülő- és gyermekcsomópontok közötti navigáláshoz használt osztály módszerei XPathNavigator miatt fontos.
A metódusok és MoveToNext a MoveToPrevious metódusok például nem arra szolgálnak, hogy elemről attribútumra vagy attribútumok között navigáljanak. Ehelyett az attribútumok különböző navigációs módszerekkel rendelkeznek.
Az osztály attribútumnavigációs módszerei az XPathNavigator alábbiak.
Ha az aktuális csomópont elem, a HasAttributes tulajdonsággal ellenőrizheti, hogy vannak-e attribútumok az elemhez társítva. Miután ismert, hogy egy elem rendelkezik attribútumokkal, több módszer is létezik az attribútumok elérésére. Ha egyetlen attribútumot szeretne lekérni az elemből, használja a metódust GetAttribute . A metódussal MoveToAttribute áthelyezheti az XPathNavigator adott attribútumot. Egy elem minden attribútumát át is iterálhatja a MoveToFirstAttribute metódus használatával, amelyet a metódus több hívása MoveToNextAttribute követ.
Feljegyzés
Ha az XPathNavigator objektum egy attribútumon vagy névtércsomóponton van elhelyezve, a MoveToChild, MoveToFirst, MoveToFirstChild, MoveToFollowing, MoveToIdMoveToNext és MoveToPrevious metódusok mindig visszatérnekfalse
, és nincs hatással a XPathNavigatorhelyére. A kivételek a MoveTo, MoveToParentés MoveToRoot a metódusok.
Névtércsomópont navigációja
Minden elem rendelkezik névtércsomópontok egy-egy készletével, egy-egy különböző névtérelőtaggal, amely az elem hatókörében lévő névtér URI-éhez van kötve (beleértve a névtérhez http://www.w3.org/XML/1998/namespace
kötött XML-előtagot is, amely minden XML-dokumentumban implicit módon deklarálva van), és egy az alapértelmezett névtérhez, ha az elem hatókörében van. Az elem az egyes névtércsomópontok szülője; a névtércsomópont azonban nem a szülőelem gyermekeleme.
Az attribútumokhoz hasonlóan a metódusok és MoveToNext a MoveToPrevious metódusok nem használhatók az elemről a névtércsomópontra vagy a névtércsomópontok közötti navigálásra. Ehelyett a névtércsomópontok különböző navigációs módszerekkel rendelkeznek.
Az osztály névtér-navigációs módszerei a XPathNavigator következők.
Az XML-dokumentum bármely elemének hatókörében mindig van legalább egy névtércsomópont. Ez a névtércsomópont az előtaggal xml
és a névtér URI-jával http://www.w3.org/XML/1998/namespace
. Ha egy adott előtaggal rendelkező névtér URI-t szeretne lekérni a hatókörben, használja a metódust GetNamespace . Az objektum egy adott névtércsomópontra való áthelyezéséhez XPathNavigator használja a metódust MoveToNamespace . Az elemek hatókörében lévő névtércsomópontokon is iterálhat úgy, hogy a MoveToFirstNamespace metódust több hívás MoveToNextNamespace követi.
Feljegyzés
Ha az XPathNavigator objektum egy attribútumon vagy névtércsomóponton van elhelyezve, a MoveToChild, MoveToFirst, MoveToFirstChild, MoveToFollowing, MoveToIdMoveToNext és MoveToPrevious metódusok mindig visszatérnekfalse
, és nincs hatással a XPathNavigatorhelyére. A kivételek a MoveTo, MoveToParentés MoveToRoot a metódusok.
Az XPathNamespaceScope enumerálása
A névtércsomópontok navigálásakor a MoveToFirstNamespace metódusok egy MoveToNextNamespace paraméterrel XPathNamespaceScope hívhatók meg. Ezek a metódusok másként viselkednek, mint a paraméterek nélkül hívott társaik. Az XPathNamespaceScope enumerálás értéke All, ExcludeXmlvagy Local.
Az alábbi példák azt mutatják be, hogy a rendszer milyen névtereket ad vissza, MoveToFirstNamespace és MoveToNextNamespace milyen metódusok jelennek meg egy XML-dokumentum különböző hatóköreiben.
<root>
<element1 xmlns="http://www.contoso.com" xmlns:books="http://www.contoso.com/books">
<element2 />
</element1>
</root>
A névtérütemezés (a XPathNavigator metódus meghívása MoveToFirstNamespace után a névtér, majd a metódushoz intézett hívások sorozata) a MoveToNextNamespace következő.
Ha a következőre
element2
van helyezve:xmlns:books="http://www.contoso.com/books"
,xmlns="http://www.contoso.com"
ésxmlns:xml="http://www.w3.org/XML/1998/namespace"
.Ha a következőre
element1
van helyezve:xmlns:books="http://www.contoso.com/books"
,xmlns="http://www.contoso.com"
ésxmlns:xml="http://www.w3.org/XML/1998/namespace"
.Ha a következő helyen
root
van elhelyezve:xmlns:xml="http://www.w3.org/XML/1998/namespace".
Feljegyzés
Az XPathNavigator osztály fordított dokumentumsorrendben adja vissza a névtércsomópontokat. MoveToFirstNamespace Ezért lényegében az aktuális hatókör vezetéknévtércsomópontjára kerül.
Az alábbi példák azt mutatják be, hogy az MoveToFirstNamespace XML-dokumentumok különböző hatóköreiben megadott enumerálással XPathNamespaceScope milyen névtereket és MoveToNextNamespace metódusokat adnak vissza.
<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>
A helymeghatározáskor child2
a névtérütemezés (a metódus meghívása MoveToFirstNamespace után a névtérXPathNavigator, majd a metódushoz intézett hívások sorozata) a MoveToNextNamespace következő.
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"
ésxmlns: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"
ésxmlns="http://www.contoso.com"
.Local:
xmlns:c="urn:c"
.
Feljegyzés
Az XPathNavigator osztály fordított dokumentumsorrendben adja vissza a névtércsomópontokat. MoveToFirstNamespace Ezért lényegében az aktuális hatókör vezetéknévtércsomópontjára kerül.
Lásd még
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: