Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


xpath eller liknande

Postades av 2005-01-11 08:50:29 - Simon Dahlbacka, i forum xml, Tråden har 15 Kommentarer och lästs av 1576 personer

Lite svårt att veta i vilket forum det här egentligen hörde hemma, men i alla fall:

Har ett xml dokument som ser ut ungefär som följande (samma struktur), som jag laddar med xmlhttp till en html sida.

<root>
  <container>
     <foo>..</foo>
     <bar>..</bar>
     <baz>..</baz>
  <container>
  <container>...</container>
   ...
</root>


Nu är jag intresserad av foo,bar,baz elementen, grupperade enligt container.
Har dagens browsers stöd för xpath, eller hur gör jag för att vettigt få fram dom

Nu gör jag
document.getElementsByTagName("container");

men sen för att få barnen så måste jag först gå igenom .childNodes, och kolla att .tagName är rätt (eftersom container tydligen innehåller "random" textelement)
och sedan hämta datan jag är intresserad av.

Detta känns dumt, har jag missat nåt, kan man göra det fiffigare?


Svara

Sv: xpath eller liknande

Postades av 2005-01-11 11:33:28 - Ola Lindfeldt

Här är ett lite snyggare sätt att lösa det på:

<html>
<head>
<script>
function parseXml()
{
  var xml;
  xml = '<root><container><foo>foo</foo><bar>bar</bar><baz>baz</baz></container><container><bar>bar2</bar></container></root>';
  var dom = new ActiveXObject("MSXML2.DOMdocument.3.0");
  dom.loadXML(xml);
  var nodes = dom.selectNodes("/root/container");
  for (n = 0; n < nodes.length; n++) 
  {
     printNode(nodes[n], 'foo');
     printNode(nodes[n], 'bar');
     printNode(nodes[n], 'baz');
     document.all.t1.innerHTML += '<p>';
  }
}
function printNode(element,name)
{
    var e = element.selectSingleNode(name);
    if (e) document.all.t1.innerHTML += e.text + '  |  ';     
}
</script>
</head>
<body onload="parseXml();">
<div id="t1"></div>
</body>
</html>


Svara

Sv:xpath eller liknande

Postades av 2005-01-11 11:54:16 - Per Persson

Det där borde väl bara fungera i MS-programvaror?


Svara

Sv: xpath eller liknande

Postades av 2005-01-11 11:56:34 - Per Persson

<b>eftersom container tydligen innehåller "random" textelement</b>

Helt "random" är de inte. I din kod har du radbrytningar och mellanslag/tabbar mellan barnelementen till container:

  <container>
     <foo>..</foo>
     <bar>..</bar>
     <baz>..</baz>
  <container>


Svara

Sv:xpath eller liknande

Postades av 2005-01-11 11:57:46 - Simon Dahlbacka

om man håller sej till enbart IE jo, men det är inte ett alternativ


Svara

Sv:xpath eller liknande

Postades av 2005-01-11 11:59:56 - Simon Dahlbacka

det är sant, men kan jag då lita på att childNodes[1], childNodes[3] och childNodes[5] ALLTID funkar? Dvs implicerar whitespace en och endast en TextNode ?


Svara

Sv: xpath eller liknande

Postades av 2005-01-11 12:19:22 - Per Persson

<b>kan jag då lita på att childNodes[1], childNodes[3] och childNodes[5] ALLTID funkar?</b>

Nej, jag vill minnas att det har varit olika mellan olika webbläsare huruvida whitespace skippas eller läggs in som en textnod. Därmed kan det förstås även vara skillnad mellan andra XML-tolkar.


Svara

Sv:xpath eller liknande

Postades av 2005-01-11 23:07:53 - Ola Lindfeldt

Varför ska du bry dig om whitespace?
Du är väl intresserad av innehållet i noderna <foo>, <bar> osv?
I mitt exempel funkar alltid nodes[n], ja. Om implementationen är sådan att t.ex. nodes[0] är whitespace (vilket verkar korkat- har aldrig sett en sådan implementation) så kommer nästa SelectSingleNode inte göra något, så det spelar ingen roll.

Yes, exemplet funkar bara med IE, windows vad jag vet, men förutsättningen, som jag fattade var att Ms XmlHttp användes också. Det är väl i princip syntax för plattformsoberoende DomDocuments gissar jag (har inte sysslat med dessa objekt själv).





Svara

Sv: xpath eller liknande

Postades av 2005-01-11 23:16:13 - Per Persson

<b>Om implementationen är sådan att t.ex. nodes[0] är whitespace (vilket verkar korkat- har aldrig sett en sådan implementation)</b>
Orkar inte pröva nu, men jag tror att Firefox kör så.

http://www.w3.org/DOM/faq:
<b>Why are some Text nodes empty?


In XML, all whitespace has to be passed through to the
application. This means that if you have whitespace, such as
carriage returns, between tags in your source file, these have to
be passed through, even if they're just there for pretty-printing.
The DOM implementation has to put this whitespace somewhere, and
the only possibility is a text node. Thus you will get text nodes
which look empty, but in fact have a carriage return or other
whitespace in them.

Note that some DOM implementations, which do not consider
whitespace in element content to be meaningful for the XML
languages they support, discard these whitespace nodes before
exposing the DOM to their users.

See also the parameter "element-content-whitespace" in the
DOMConfiguration interface provided by DOM Level 3.</b>


Som vanligt... IE gör fel, Firefox gör rätt.


Svara

Sv: xpath eller liknande

Postades av 2005-01-11 23:53:30 - Simon Dahlbacka

<b>Yes, exemplet funkar bara med IE, windows vad jag vet, men förutsättningen, som jag fattade var att Ms XmlHttp användes också. Det är väl i princip syntax för plattformsoberoende DomDocuments gissar jag (har inte sysslat med dessa objekt själv).</b>

förutsättningen var xmlhttp jo MEN inte enbart ms xmlhttp (ActiveX)
http://developer.apple.com/internet/webcontent/xmlhttpreq.html

Så tyvärr, även om nån sorts xpath skulle ha varit bra, så verkar det inte funka i alla browsers..


Svara

Sv: xpath eller liknande

Postades av 2005-01-12 00:19:35 - Per Persson

Om du vet vad underelementen heter och element med det namnet inte kan finnas på lägre nivåer, kan du använda getElementsByTagName() på container-elementet:

var containers = document.getElementsByTagName("container");
for(var i = 0; i<containers.length; i++) {
    var container = containers[i];

    var foo = container.getElementsByTagName("foo");    // <---- hämtar foo-elementet under container

}


Svara

Sv:xpath eller liknande

Postades av 2005-01-12 08:49:10 - Simon Dahlbacka

där hade vi det! Var helt övertygad om att även getElementsByTagName hörde hemma endast på dokument objektet, men så var ju inte fallet.


Svara

Sv:xpath eller liknande

Postades av 2005-01-12 10:33:50 - Ola Lindfeldt

PP: Ok det var ju gulligt av Firefox. Men ärligt talat tycker jag att en DOM som ignorerar Whitespace är mer användbar. I verkliga scenarier vill jag plocka ut riktig data från vissa noder. Då är inte whitespace intressant, utan leder ju bara till mer kod, eventuellt. Men det klart: det bästa vore väl om det var valbart och att default var standard enl DOM level 3. Typ en flagga på objektet IgnoreWhitespace true/false.


Svara

Sv: xpath eller liknande

Postades av 2005-01-12 11:25:40 - Per Persson

Valbart skulle vara okej.


Svara

Sv:xpath eller liknande

Postades av 2005-01-12 12:50:10 - Ola Lindfeldt

Simon,
Xpath fungerar bra i DOM Level 3 (ska fungera) och i Mozilla/Firefox då.
Dvs mitt exempel bör funka där och med Xpath,
det är bara skapandet av själva objekten XmlHttp, DomDocument, osv som skiljer sig.
I det här fallet är det väl vilket som, men jag brukar alltid köra Xpath uttryck som ger mer flexibilitet.



Svara

Nyligen

  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak
  • 16:14 Vem anlitar man egentligen när tak
  • 16:13 Vem anlitar man egentligen när tak
  • 11:52 Noen erfaring med uttak hos Mostbe
  • 11:51 Noen erfaring med uttak hos Mostbe

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 575
27 958
271 741
6 008
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies