Megosztás a következőn keresztül:


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 element2van helyezve: xmlns:books="http://www.contoso.com/books", xmlns="http://www.contoso.com"és xmlns:xml="http://www.w3.org/XML/1998/namespace".

  • Ha a következőre element1van helyezve: xmlns:books="http://www.contoso.com/books", xmlns="http://www.contoso.com"és xmlns:xml="http://www.w3.org/XML/1998/namespace".

  • Ha a következő helyen rootvan 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 child2a 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"és xmlns: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"és xmlns="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