03. januar 2005 - 23:57Der er
8 kommentarer og 3 løsninger
CreateElement til Childnodes
Hej.... Jeg forsøger at oprette nye knuder i mit XML dokument. Men jeg vil ikke kun oprette en knude...jeg vil også gerne oprette knuder i mine nye knuder....
Se her: ---------------kode Set objWeek = objRoot.SelectSingleNode("uge[ugenr='" & strFormUgenr & "']") Set objDag = objWeek.SelectSingleNode("ugedag[navn='" & strFormUgeDag & "']")
Danmark vil mindske afhængigheden af globale techgiganter, men det kræver mere end politiske formuleringer og strategier, understreger PROSA’s formand Niels Bertelsen.
Jeg har nu fiflet mig frem til at koden skal se nogenlunde således ud: --------------------- Set objRootNode = objDag.CreateElement("arr") objRootNode.AppendChild(objDag.CreateElement("tid")).Text = strNewTid objRootNode.AppendChild(objDag.CreateElement("lokale")).Text = strNewLok Set objChildNode = objRootNode.AppendChild(objDag.CreateElement("text")) objChildNode.AppendChild(objDag.CreateElement("type")).Text = strNewType objChildNode.AppendChild(objDag.CreateElement("link")).Text = strNewLink objChildNode.AppendChild(objDag.CreateElement("beskr")).Text = strNewBeskr
--------------------------
Men jeg får følgende serverfejl: ------------- Object doesn't support this property or method: 'objDag.CreateElement' --------------
CreateElement skal gøres fra selve xml-dokument objektet, du forsøger at gøre det med en xmlnode-objekt og det er ikke tilladt. Du kan i stedet benytte flg. til at oprette et nyt element:
Åhhh... Jamen så kan mit forehavende måske ikke lade sig gøre. Jeg er med på at bruge CreateElement på mit xmlobjekt...men det kan altså ikke lade sig gøre at neste flere childnode i en childnode... Problemet her er tagget text. Dette tag skal indeholde tre yderligere tags. Det kan jeg altså ikke klare i een omgang???
Jeg kan måske gøre det af flere omgange...ved at gemme mit tag "text"...(gemme filen), åbne den igen og hente den knude jeg har oprettet og tilføje de sidste knuder??? Eller hur?
Hmmmm nu når jeg læser dit indlæg igen lyder det som om det slet ikke kan lade sig gøre. Kan jeg kun tilføje knuder til roden...eller må jeg godt som jeg forsøger her, tilføje knuder til en eller flere underknuder længere nede i xml-træet????
Du kan sagtens lave et hierarki af noder, men det er kun xml-documentet der kan skabe dem. Hvor du indsætter noderne i strukturen er ligegyldigt, sålænge det er et eller andet sted i det dokument som har skabt noden...
Så det eksempel du viste i anden omgang kan godt bruges, når blot du udskifter objDag med objXML.
"Hvor du indsætter noderne i strukturen er ligegyldigt, sålænge det er et eller andet sted i det dokument som har skabt noden..."
Hmmm...OK jeg er med på at jeg kun kan lade xmldocument skabe knuder. Men jeg har brug for at skabe knuder et bestemt sted i filen...og ikke bare til slut eller i starten af filen....
Jeg vil gerne kunne vælge en bestemt knude ud til at oprette flere knuder i. Det kan jeg måske ikke med CreateElement...jeg skal måske ud i noget med insertAfter/before eller hvad....
NEJ....nu er det snart nok...det er fandme næsten ligsom at kode med bind for øjnene det her. Er der ikke nogen der har et tip til hvor jeg kan finde et asp API der kan bruges ligesom til PHP eller java. Jeg sidder og koder i blinde...og der er ikke megen hjælp at hente i min VIM.
Det er ikke så svært og du kan sagtens skabe knuder midt i filen. Som jeg sagde skulle du bare bruge det kode du kom frem til i dit andet post og udskifte objDag med objXML - sådan her:
Set objRootNode = objXML.CreateElement("arr") objRootNode.AppendChild(objXML.CreateElement("tid")).Text = strNewTid objRootNode.AppendChild(objXML.CreateElement("lokale")).Text = strNewLok
Hvis du kan genneskue hvorfor du får denne struktur, er du godt på vej til at bruge dette interface. Prøv det og hold kontakten vedlige her, så skal jeg nok se om jeg ikke kan assistere til du føler dig lidt mere sikker på hvad du skal gøre og hvorfor...
Så skal jeg bare have skidtet ned i den rigtige knude. Det må jeg godt gøre med appandchild ?????? Eller fungerer det heller ikke på et selectSingleNode-objekt?
Jeg kunne nu stadig godt bruge et godt API... /Babz
Du kan finde en knude ved at kalde SelectSingleNode på et hvilket som helst element i dokumentet således:
Set objTextType = objDag.SelectSingleNode("/arr/text/type") If Not objTextType Is Nothing Then objTextType.AppendChild(objXML.CreateElement("subtype")).Text = strTxtSubType End If
Bemærk at det altid er en god idé at checke om det objekt du finder via SelectSingleNode.
Det vil give flg. struktur (antagende at du arbejde videre med den fra tidligere):
Du kan også bruge SelectSingleNode til at vælge knuder relativt ifht. et aktuel node (det andet eksempel valgt absolut, hvis du ikke skulle have opdaget det ;)). Men det er jo et helt kapitel for sig selv det der XPath :)
Vi kan ikke have at folk går og mister modet og det er i særdeleshed en fornøjelse at hjælpe når man får sådan en positiv respons. Jeg takker :)
Synes godt om
Ny brugerNybegynder
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.