|
|
Az IXMLNode interfész
IXMLNode 1. rész
|
|
Példaprogram letöltése
61554 bájt
|
Az IXMLNode egy olyan interfész, amelyen keresztül egy XML dokumentum csomópontjait kezelhetjük. Az IXMLNode interfész hasonló az IDOMNode interfészhez, ami a Document Object Model (DOM) specifikáció része. Mindemellett az IXMLNode interfész leegyszerűsíti a csomópontok szerkesztését, és a csomópontok közötti navigációt. Több property-t és metódust tartalmaz az IDOMElement interfészből, amelyek leegyszerűsítik egy XML csomópont vizsgálatát, valamint elősegítik az XML struktúrákban tárolt adatokhoz való hozzáférést.

AttributeNodes
Osztály: IXMLNode
property AttributeNodes: IXMLNodeList;
Az aktuális csomópont attribútumait tartalmazó csomópontok IXMLNodeList típusú objektumát adja vissza.
<employee firstname=”Janet” lastname=”Baldwin” age=28>
A fenti példában az „employee” csomópont három attribútuma a „firstname”, „lastname” és az „age”. Ha csak az attribútumok értékeire vagyunk kíváncsiak, akkor használhatjuk az Attributes property-t is. Ha viszont szükségünk van az attribútumok számára, neveire, esetleg törölni, vagy hozzáadni akarunk attribútumokat, akkor az AttributeNodes property-t kell használnunk.
Csak az elem csomópontoknak lehetnek attribútumai, de nem minden elem csomópontnak vannak. Ha nincsenek attribútumok, akkor az AttributeNodes property-ben egy üres listát kapunk.
A csomópont attribútumai nem érhetők el a ChildNodes property-n keresztül, mivel azok nem gyermek csomópontok.

Attributes
Osztály: IXMLNode
property Attributes[const AttrName: DOMString]: OleVariant;
Ha tudjuk a csomópont attribútumának nevét, akkor az értékét ezzel a property-vel kérdezhetjük le. A property tömb típusú, indexként az attribútum nevét kell megadni.

ChildNodes
Osztály: IXMLNode
property ChildNodes: IXMLNodeList;
Ebből a property-ből gyermek csomópontok listáját kapjuk meg egy IXMLNodeList típusú objektumban.

ChildValues
Osztály: IXMLNode
property ChildValues[const IndexOrName: OleVariant]: OleVariant; default;
Az IndexOrName index által meghatározott gyermek elem értékét adja vissza a property. Az IndexOrName index lehet a gyermek csomópont objektuma, vagy a neve. Ha nem található olyan gyermek csomópont, amely az IndexOrName index-nek megfelel, akkor kivétel keletkezik. A visszaadott érték az elem típusától függ:
| Érték |
Típus |
| ntElement |
ha az elem csak szöveget tartalmaz, akkor az eredmény a szöveg lesz, ellenkező esetben az első gyermek csomópont értéke. |
| ntText |
a csomópont által tartalmazott szöveg. |
| ntCData |
CDATA szekció tartalma. |
| ntProcessingInstr |
a feldolgozási instrukciók tartalma. |
| ntComment |
a csomópont értéke (szöveg). |

Collection
Osztály: IXMLNode
property Collection: IXMLNodeCollection;
Ebben a property-ben az azonos típusú, és ugyanazon szülő csomóponthoz tartozó csomópontokat kapjuk meg egy IXMLNodeCollection típusú objektumban. A könnyebb érthetőség kedvéért nézzünk erre egy példát:
<reszleg>
<dolgozo>
<nev>Kovács József</nev>
</dolgozo>
<dolgozo>
<nev>Nagy Aranka</nev>
</dolgozo>
<vezeto>
<nev>Horváth Alajos</nev>
</vezeto>
</reszleg>
Legyen az aktuális csomópont az első <dolgozo> elem. Ekkor a szülő csomópont (ParentNode) a <reszleg> elem, és a Collection property azokat a csomópontokat fogja tartalmazni, amelyek szülő csomópontja a <reszleg> elem, és a csomópont típusa <dolgozo>, és a <vezeto> csomópont nem fog szerepelni ebben az objektumban.

DOMNode
Osztály: IXMLNode
property DOMNode: IDOMNode;
Ez a property hozzáférést biztosít a csomópont IDOMNode típusú objektumához, amin keresztül elérhetjük az alacsonyabb szintű property-ket és metódusokat. Az alkalmazások többsége nem használja ki ezt a lehetőséget, helyette az IXMLNode interfészt használja.

HasChildNodes
Osztály: IXMLNode
property HasChildNodes: Boolean;
A property értéke igaz, ha a csomópontnak vannak gyermek csomópontjai, és hamis, ha nincsenek. Az attribútumok, és a szöveges tartalom nem számít csomópontnak.

IsTextElement
Osztály: IXMLNode
property IsTextElement: Boolean;
A property értéke igaz, ha a csomópont csak egy egyszerű szöveges adatot tartalmaz, pl.:
<nev>Kovács József</nev>

LocalName
Osztály: IXMLNode
property LocalName: DOMString;
A csomópont nevét adja vissza ez a property. Csak az ntElement és ntAttribute típusú csomópontoknak van neve. A név nem fogja tartalmazni a névtér előtagot. Ha a property nincs definiálva, akkor használjuk helyette a NodeName property-t. Ha a név előtt nincs megadva a névtér előtag, akkor a két property értéke megegyezik.

NamespaceURI
Osztály: IXMLNode
property NamespaceURI: DOMString;
A property visszaadja a csomópont névterének Universal Resource Identifier (URI) azonosítóját. Csak abban az esetben adja ezt vissza, ha a csomópont nevénél ez meg van adva. Alapértelmezés szerint az IXMLNode interfész az URI-t nem teszi hozzá a csomópont nevéhez.

NodeName
Osztály: IXMLNode
property NodeName: DOMString;
A csomópont nevét adja vissza ez a property. Ha a névtér is meg van adva a név előtt, akkor a property értéke azt is tartalmazni fogja. A visszaadott név függ a csomópont típusától is:
| Típus |
Név |
| ntAttribute |
az attribútum neve |
| ntElement |
az elem neve |
| ntText |
‘#text’ |
| ntCData |
‘#cdata-section’ |
| ntEntityRef |
az egyedhivatkozás neve |
| ntEntity |
az egyed neve |
| ntProcessingInstr |
a feldolgozási instrukció célja |
| ntComment |
‘#comment’ |
| ntDocument |
‘#document’ |
| ntDocType |
a dokumentumtípus neve |
| ntDocFragment |
‘#document-fragment’ |
| ntNotation |
a jelölésrendszer neve |

NodeType
Osztály: IXMLNode
property NodeType: TNodeType;
A csomópont típusát adja vissza ez a property. Értékei az alábbiak lehetnek:
| Érték |
Jelentés |
| ntReserved |
nem használt |
| ntElement |
A csomópont egy olyan egyszerű elem, amely gyermek csomópontokat tartalmaz. A gyermek elemek típusai a következők lehetnek: ntElement, ntText, ntCData, ntEntityRef, ntProcessingInstr, és ntComment. A csomópontnak lehetnek attribútumai is (ntAttribute). A csomópont a következő típusú csomópontoknak lehet a gyermek eleme: ntDocument, ntDocFragment, ntEntityRef, és ntElement. |
| ntAttribute |
A csomópont egy elem attribútumát tartalmazza. Ez nem gyermeke egy másik csomópontnak, az értéke az Attributes property-vel kérdezhető le. Az ilyen típusú csomópontoknak lehet gyermek eleme az ntText vagy ntEntityRef típusú csomópont. |
| ntText |
Egyszerű szöveg, ami nem tartalmazhat gyermek elemeket, viszont az a következő csomópont típusoknak lehet a gyermek csomópontja: ntAttribute, ntDocFragment, ntElement, vagy ntEntityRef. |
| ntCData |
A csomópont egy CDATA szakaszt reprezentál az XML forráskódban, és tagolt, formázott szöveget tartalmazhat. Nem lehet gyermek eleme, viszont a következő típusoknak lehet gyermeke: ntDocFragment, ntEntityRef, vagy ntElement. |
| ntEntityRef |
A csomópont többféle hivatkozást tartalmazhat egy másik egyedre
A következő típusok lehetnek a gyermekei: ntElement, ntProcessingInstr, ntComment, ntText, ntCData, és ntEntityRef. A következő típusoknak lehet gyermeke: ntAttribute, ntDocFragment, ntElement, vagy ntEntityRef. |
| ntEntity |
A csomópont egy kiterjesztett egyed elemet reprezentál. Gyermekei szintén kiterjesztett egyedek lehetnek, például ntText vagy ntEntityRef csomópontok. Csak az ntDocType típusú csomópontnak lehet a gyermeke. |
| ntProcessingInstr |
A csomópont egy feldolgozási instrukciót tartalmaz (PI – Processing Instruction). Ennek az elemnek nem lehetnek gyermek elemei, viszont gyermeke lehet az ntDocument, ntDocFragment, ntElement, vagy ntEntityRef típusú elemeknek. |
| ntComment |
A csomópont egy megjegyzést tartalmaz az XML dokumentumban. Nem lehetnek gyermek elemei, viszont a következő elemeknek lehet a gyermeke: ntDocument, ntDocFragment, ntElement, és ntEntityRef. |
| ntDocument |
A csomópont a dokumentum gyökér eleme. Egyetlen ntElement típusú gyermek eleme lehet (DocumentElement). Ezen kívül az alábbi elemek lehetnek még a gyermek elemei: ntProcessingInstr, ntComment, és ntDocType. Mivel ez a gyökér elem, így ennek nem lehet szülő eleme. |
| ntDocType |
A csomópont a dokumentum típusát adja meg (<!DOCTYPE > elem). Lehet gyermek eleme az ntNotation és ntEntity típusú csomópont. Mindig a DocumentElemet gyermek eleme. |
| ntDocFragment |
Egy egyszerű csomópont vagy csoport, amelyet a dokumentum ténylegesen nem tartalmaz. Gyermek elemei lehetnek a ntElement, ntProcessingInstr, ntComment, ntText, ntCData, és ntEntityRef csomópontok. Soha nincs szülő eleme. |
| ntNotation |
A csomópont egy jelölésrendszert határoz meg a dokumentum típus deklarációban. Mindig az ntDocType csomópont gyermek eleme, és nem lehetnek gyermek elemei. |

NodeValue
Osztály: IXMLNode
property NodeValue: OleVariant;
A csomópont értékét adja vissza, illetve ezen keresztül adhatjuk meg az új értéket. Az érték típusa a csomópont típusától függ (lásd. ChildValues property).

OwnerDocument
Osztály: IXMLNode
property OwnerDocument: IXMLDocument;
Visszaadja az XML dokumentum IXMLDocument interfészének objektumát.

ParentNode
Osztály: IXMLNode
property ParentNode: IXMLNode;
A szülő csomópont IXMLNode objektumát adja vissza.

Prefix
Osztály: IXMLNode
property Prefix: DOMString;
A csomópont nevének névtér előtagját adja vissza a property. A névtér előtag a névtér URI szimbolikus neve:
<xsi:Name First=Janet Last=Baldwin>
A fenti példában a csomópont neve „Name”, míg a névtér előtag az „xsi”. Névtér előtag külön megadható az attribútumoknak is, viszont ha nem adjuk meg, akkor nem fogja örökölni a csomópont névterét.
<xsi:Name xsn:First=Janet Last=Baldwin>
A fenti példában két attribútum van: az első a „First”, a második pedig a „Last”. Az első attribútum névtér előtagja „xsn”, a másodiké pedig egy üres sztring.

ReadOnly
Osztály: IXMLNode
property ReadOnly: Boolean;
Ha a property értéke igaz, akkor a csomópont adatai nem szerkeszthetők. Ha az értéke hamis, akkor a csomópont módosítható.

Text
Osztály: IXMLNode
property Text: DOMString;
A csomópont szövegét adja vissza ez a property, illetve ezen keresztül adható meg. Ha a csomópont a következőképpen néz ki:
<name> Janet Baldwin </name>
akkor a text property értéke „Janet Baldwin”.
Ha a csomópontnak vannak gyermek csomópontjai, akkor a property használata kivételt okoz.

XML
Osztály: IXMLNode
property XML: DOMString;
A csomópont tartalmát adja vissza ez a property XML formátumban. Az XML gyökere az aktuális csomópont lesz.
|
Könyv
Ez a cikk megtalálható ebben a könyvben:
Delphi Software Offline 2002 évkönyv 357. oldal
Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!
|