Avatar billede monkeysee Nybegynder
28. januar 2005 - 17:57 Der er 9 kommentarer og
1 løsning

parentNode driller

Hvis man forestiller sig et XML dokument med struktur som et filsystem

root
- mappe#1
  - dokument#1
- mappe#2
  - dokument#2
- mappe#3
- dokument#3

Hvordan kan det så være at dokument#3's parentNode er mappe#1? Jeg har testet både med flash' XML parser og en PHP klasse - samme resultat begge stedet.

Der er tydeligvis noget jeg ikke har fattet ;-)

Point's til den som har en metode der afgør, hvorvidt "dokument" befinder sig i "mappe" !

TIA
Avatar billede softspot Forsker
28. januar 2005 - 18:11 #1
Har du noget konkret XML eller er du på jagt efter noget XPath som kan hjælpe dig med at lave det påg. check?
Avatar billede monkeysee Nybegynder
28. januar 2005 - 18:20 #2
Jeg bruger TYPE attributter til at afgøre hvorvidt en given node er "mappe" eller "dokument". Og xPath er vist ikke glad for hverken flash eller den PHP implementation jeg arbejder med (tjekker lige...)

<TREE TYPE="root">Indhold
    <TREE TYPE="mappe">Aktive nyheder
        <TREE TYPE="dokument">Ny side</TREE>
    </TREE>
    <TREE TYPE="mappe">Diverse
        <TREE TYPE="dokument">Ny side</TREE>
    </TREE>
    <TREE TYPE="dokument">Ny side</TREE>
</TREE>


Så konkret som det kan blive
Avatar billede monkeysee Nybegynder
28. januar 2005 - 18:39 #3
jeg bruger desværre ikke Php.XPath:
http://www.carrubbers.org/scripts/php/xpath/

det ser ellers lovende ud!. Jeg bruger phpdomxml, se denne adresse
http://phpdomxml.webtweakers.com/functest.php

Det minder meget om actionscripts' måde at tilgå XML, men mangler xPath funktionaliteten.
Avatar billede softspot Forsker
28. januar 2005 - 18:39 #4
Hmmm, nedenstående burde finde alle dokument-noder der har en mappe som forælder:

"//TREE[@TYPE='document' and ../@TYPE='mappe']"

nedenstående burde finde alle dokument-noder der ikke har en mappe som forælder:

"//TREE[@TYPE='document' and not(../@TYPE='mappe')]"

Hvis du skal lave et check på om en forælder-node er en mappe eller ej, kræver det vel at du har en konkret node at tage udgangspunkt i.
Avatar billede verakso Nybegynder
28. januar 2005 - 18:41 #5
Nu roder jeg hverken med Flash eller PHP, men gansle almindelige XSLT som <xsl:value-of select="parent::node()/@TYPE='mappe'"/> virker fint for mig.
Grunden til at jeg satte en @TYPE='mappe' på var da det jo ikke er implicit om en parent  node er en type mappe eller type dokument.
Personligt ville jeg nok have valgt at kalde noden spedifikt for hhv, <folder> og <document>
Avatar billede monkeysee Nybegynder
28. januar 2005 - 18:52 #6
softspot: "Hvis du skal lave et check på om en forælder-node er en mappe eller ej, kræver det vel at du har en konkret node at tage udgangspunkt i."

Jeg tager udgangspunkt i dokument#3, hvis parentNode er mappe#1 som beskrevet først. Og xPath er IKKE en mulighed med flash. Jeg kan navigere i XML ved at læse flg. properties

XML.addRequestHeader()
Adds or changes HTTP headers for POST operations.

XML.appendChild()
Appends a node to the end of the specified object's child list.

XML.cloneNode()
Clones the specified node and, optionally, recursively clones all children.

XML.createElement()
Creates a new XML element.

XML.createTextNode()
Creates a new XML text node.

XML.getBytesLoaded()
Returns the number of bytes loaded for the specified XML document.

XML.getBytesTotal()
Returns the size of the XML document, in bytes.

XML.hasChildNodes()
Returns true if the specified node has child nodes; otherwise, returns false.

XML.insertBefore()
Inserts a node in front of an existing node in the specified node's child list.

XML.load()
Loads a document (specified by the XML object) from a URL.

XML.parseXML()
Parses an XML document into the specified XML object tree.

XML.removeNode()
Removes the specified node from its parent.

XML.send()
Sends the specified XML object to a URL.

XML.sendAndLoad()
Sends the specified XML object to a URL and loads the server response into another XML object.

XML.toString()
Converts the specified node and any children to XML text.


Property summary for the XML class
Property
Description

XML.contentType
Indicates the MIME type transmitted to the server.

XML.docTypeDecl
Sets and returns information about an XML document's DOCTYPE declaration.

XML.firstChild
Read-only; references the first child in the list for the specified node.

XML.ignoreWhite
When set to true, text nodes that contain only white space are discarded during the parsing process.

XML.lastChild
References the last child in the list for the specified node.

XML.loaded
Read-only; checks if the specified XML object has loaded.

XML.nextSibling
Read-only; references the next sibling in the parent node's child list.

XML.nodeName
The node name of an XML object.

XML.nodeType
The type of the specified node (XML element or text node).

XML.nodeValue
The text of the specified node if the node is a text node.

XML.parentNode
Read-only; references the parent node of the specified node.

XML.previousSibling
Read-only; references the previous sibling in the parent node's child list.

XML.status
A numeric status code indicating the success or failure of an XML document parsing operation.

firstChild
lastChild
nextSibling
nodeName
nodeType
nodeValue
parentNode
previousSibling
Avatar billede monkeysee Nybegynder
28. januar 2005 - 18:52 #7
Ups..der fik også lige metoderne med ;-)
Avatar billede monkeysee Nybegynder
28. januar 2005 - 19:07 #8
OK nu skal vi ikke miste fokus her. Jeg dropper Flash, og bruger istedet PHPxPath klassen.

Jeg har nemlig lige fyret mit eget XML dokument ind i en PHPxPath testbench, og dine xpath strings virker "cut'n'paste" softspot!! Det vil sige, at jeg gennem PHP kan filtere de XML data som flash modtager.

Egentlig fik jeg ikke svar på mit spørgsmål - og så dog. Ud fra min beskrivelse så har du og verakso fortjent point

Hvad siger I?
Avatar billede softspot Forsker
29. januar 2005 - 02:08 #9
hvis du er tilfreds med det du har fået, så kan jeg leve med det :)
Avatar billede verakso Nybegynder
29. januar 2005 - 13:07 #10
Der er ikke meget at dele af, så jeg syntes at credit går til softspot, han har lagt en del i det.
I øvrigt er det jeg skrev storset det samme som det der blev postet 2 minitter tidligere....
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester