Is het mogelijk om de locatie in het document (dus line en column) te achterhalen voor een XmlNode? Ik ben al even aan het bladeren maar tot zover heb ik nog niets kunnen vinden. De reden dat ik het nodig heb is dat ik betere foutmeldingen wil geven waarin de locatie waar de fout zich voortdoet ook vermeld staat.
Dat hangt helemaal van je xml structuur af of je het zo kan vinden. Als je elke nod uniek kan identificeren
is het makelijk. Wat je ook kan doen is een tijdelijke marker in de node zetten die mis is. Daarna dinamisch de xpath query opbouwen.
Maar er is niet een of andere functie:dotcode schreef op dinsdag 14 december 2004 @ 15:10:
Dat hangt helemaal van je xml structuur af of je het zo kan vinden.
Position pos = xmlDocument.getPosition(node);
Die informatie wordt standaard nergens bijgehouden???
Die garantie kan ik niet geven.Als je elke nod uniek kan identificerenis het makelijk.
Jezus wat een geneuzel.. Ok.. dan ga ik wel een keer in de toekomst alle locaties van alle nodes in het document in een container kwakken zodat ik de locaties kan uitlezen... (Zo doe ik het ook met mijn parser generator SableCC)Wat je ook kan doen is een tijdelijke marker in de node zetten die mis is. Daarna dinamisch de xpath query opbouwen.
Is het niet iets wat at parse-time al opgelost kan worden door validatie van je xml document, bijv. door schema's ofzo?
Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz
Nee... Validatie mbv schema lost maar een beperkte hoeveelheid problemen op. Stel dat je bv database checks moet doen, dan kan je dat niet in Schema oplossen. Ik heb dus zulke problemen die zich niet laten vertalen in een schema.. Dus ik wil zelf ook fouten opwerpen.... en om informatieve fouten op te werpen wil ik positie er bij hebben.... Hou zou jij het vinden als jouw compiler geen melding geeft waar de fout is opgetreden???drm schreef op dinsdag 14 december 2004 @ 16:08:
Is het niet iets wat at parse-time al opgelost kan worden door validatie van je xml document, bijv. door schema's ofzo?
[ Voor 28% gewijzigd door Alarmnummer op 14-12-2004 16:13 ]
Hmmm,
aangezien
en
dezelfde betekenis hebben, zou het me niet onlogisch lijken dat dit niet mogelijk is.
(firefox laat wel zien waar de fout zich bevindt, maar dit gebeurt volgens mij tijdens het
parsen van de file, en is het niet zo in .Net dat er een exception wordt geworpen als je een
foute xml-file parsed?)
edit: eigenlijk zijn de 2 voorbeeldjes toch niet helemaal gelijk, aangezien de hoofdnode in het 1e gval enkel 2 subnodes heeft, maar in het 2e geval ook nog eens 3 tekstgedeelten
aangezien
XML:
1
| <hoofdnode><subnode1>text</subnode1><subnode2>text</subnode2></hoofdnode> |
en
XML:
1
2
3
4
| <hoofdnode> <subnode1>text</subnode1> <subnode2>text</subnode2> </hoofdnode> |
dezelfde betekenis hebben, zou het me niet onlogisch lijken dat dit niet mogelijk is.
(firefox laat wel zien waar de fout zich bevindt, maar dit gebeurt volgens mij tijdens het
parsen van de file, en is het niet zo in .Net dat er een exception wordt geworpen als je een
foute xml-file parsed?)
edit: eigenlijk zijn de 2 voorbeeldjes toch niet helemaal gelijk, aangezien de hoofdnode in het 1e gval enkel 2 subnodes heeft, maar in het 2e geval ook nog eens 3 tekstgedeelten
[ Voor 24% gewijzigd door schoene op 14-12-2004 16:22 ]
Bij een XmlTextReader kun je de line en position opvragen, zijn gewoon public properties. En een XmlException bevat deze informatie ook altijd.
Of gebruik je het helemaal niet zo.
Of gebruik je het helemaal niet zo.
Onzin... En parser kan gerust bij het parsen van xmlnodes informatie over de locatie van die nodes meenemen. En dan mag tekst best inhoudelijk hetzelfde zijn.. maar qua format van de tekst helemaal anders.schoene schreef op dinsdag 14 december 2004 @ 16:19:
Hmmm,
aangezien
XML:
1 <hoofdnode><subnode1>text</subnode1><subnode2>text</subnode2></hoofdnode>
en
XML:
1 2 3 4 <hoofdnode> <subnode1>text</subnode1> <subnode2>text</subnode2> </hoofdnode>
dezelfde betekenis hebben, zou het me niet onlogisch lijken dat dit niet mogelijk is.
Lees mijn topic volgende keer even goed voordat je antwoord geeft.(firefox laat wel zien waar de fout zich bevindt, maar dit gebeurt volgens mij tijdens het
parsen van de file, en is het niet zo in .Net dat er een exception wordt geworpen als je een
foute xml-file parsed?)
Alarmnummer schreef op dinsdag 14 december 2004 @ 16:11:
[...]
Nee... Validatie mbv schema lost maar een beperkte hoeveelheid problemen op. Stel dat je bv database checks moet doen, dan kan je dat niet in Schema oplossen. Ik heb dus zulke problemen die zich niet laten vertalen in een schema.. Dus ik wil zelf ook fouten opwerpen.... en om informatieve fouten op te werpen wil ik positie er bij hebben.... Hou zou jij het vinden als jouw compiler geen melding geeft waar de fout is opgetreden???
Ahhh.. en volgens dezelfde argumentering zou een normale (java bv) parser ook geen goeie foutmelding (inclusief regelnummer) kunnen opwerpen bijedit: eigenlijk zijn de 2 voorbeeldjes toch niet helemaal gelijk, aangezien de hoofdnode in het 1e gval enkel 2 subnodes heeft, maar in het 2e geval ook nog eens 3 tekstgedeelten
int a="foo";
int b=true;
[ Voor 36% gewijzigd door Alarmnummer op 14-12-2004 17:14 ]
Nog niet helemaal, maar ik zal er ffies naar kieken.questa schreef op dinsdag 14 december 2004 @ 16:49:
Bij een XmlTextReader kun je de line en position opvragen, zijn gewoon public properties. En een XmlException bevat deze informatie ook altijd.
Of gebruik je het helemaal niet zo.
[ Voor 5% gewijzigd door Alarmnummer op 14-12-2004 17:12 ]
Aardig voorbeeld, jaAlarmnummer:
Nee... Validatie mbv schema lost maar een beperkte hoeveelheid problemen op. Stel dat je bv database checks moet doen, dan kan je dat niet in Schema oplossen.
Hej, ik doe vooral veel PHP, don't ask meIk heb dus zulke problemen die zich niet laten vertalen in een schema.. Dus ik wil zelf ook fouten opwerpen.... en om informatieve fouten op te werpen wil ik positie er bij hebben.... Hou zou jij het vinden als jouw compiler geen melding geeft waar de fout is opgetreden???
Choeso jei, 't verschil is dat een (stricte) parser normaal gesproken voor de stukken whitespace in je 2e voorbeeldje text nodes aanmaakt met een whitespace inhoud (bijvoorbeeld [LF][CR][TAB], oid). Er is dus wel degelijk verschil tussen de documenten.schoene:
edit: eigenlijk zijn de 2 voorbeeldjes toch niet helemaal gelijk, aangezien de hoofdnode in het 1e gval enkel 2 subnodes heeft, maar in het 2e geval ook nog eens 3 tekstgedeelten
Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz
Misschien heb je wat aan onderstaande link, het gaat over het uitbreiden van de DOM
. Check ook de voorbeeld: Extending DOM
. Check ook de voorbeeld: Extending DOM
[ Voor 81% gewijzigd door alienfruit op 14-12-2004 20:22 ]
Ik zal er eens naar kijken.
Weet iemand trouwens ook hoe ik de layout van een XML bestand goed kan krijgen als ik het document volledig in c# aan het opbouwen ben? Op dit moment voegt hij geen enters en tabs doe en staat alles mooi op 1 regel als ik het naar bv de console wegschrijf.
Weet iemand trouwens ook hoe ik de layout van een XML bestand goed kan krijgen als ik het document volledig in c# aan het opbouwen ben? Op dit moment voegt hij geen enters en tabs doe en staat alles mooi op 1 regel als ik het naar bv de console wegschrijf.
[ Voor 9% gewijzigd door Alarmnummer op 15-12-2004 08:14 ]
XmlTextWriter.Formatting Property, werkt prima en nogmaals, je kan bij een XmlTextWriter ook altijd de currentline en position opvragen. Hoe schrijf jij nu alles weg?
Ik maak op dit moment gebruik van een XmlDocument die alle nodes aanmaakt en ik link zelf de childnodes met de parent nodes. En na afloop vraag ik aan het XmlDocument.. innerXml geloof ik.questa schreef op woensdag 15 december 2004 @ 08:49:
XmlTextWriter.Formatting Property, werkt prima en nogmaals, je kan bij een XmlTextWriter ook altijd de
En ik ben de posities nodig bij het lezen (niet bij het schrijven) en zal straks even kijken naar die XmlTextReader.
XmlDocument kent volgens mij geen Formatting, maar de Save method neemt een XmlWriter als argument en XmlTextWriter is afgeleid van de XmlWriter.
Pagina: 1