Avatar billede gtu Nybegynder
17. marts 2009 - 13:30 Der er 6 kommentarer og
1 løsning

XML parse

Hej,

Hvordan kan jeg parse prisen ud på en large tshirt?

XML1.DocumentElement.ChildNodes['tshirt'].ChildValues['pris']; ??
^Giver mig prisen på en small

<?xml version="1.0" encoding="utf-8"?>
<tshirt>
  <pris size="small">70KR</pris>
  <pris size="medium">80KR</pris>
  <pris size="large">90KR</pris>
</tshirt>
Avatar billede Slettet bruger
17. marts 2009 - 13:40 #1
Hej Gtu,

XML1.DocumentElement.ChildNodes['tshirt'].ChildNodes['pris'].ChildValues['large'];

Med venlig hilsen
Ieet
Avatar billede gtu Nybegynder
17. marts 2009 - 15:56 #2
virker ikke
Avatar billede arne_v Ekspert
18. marts 2009 - 01:39 #3
Iteration gemme DOM træ er for besværligt - det er nemmere med XPath.

Kode:

  doc := TXMLDocument.Create(nil);
  doc.LoadFromFile('C:\d.xml');
  pris := (doc.DOMDocument As IDOMNodeSelect).selectNode('//tshirt/pris[@size="large"]/text()').nodeValue;
Avatar billede gtu Nybegynder
20. marts 2009 - 14:34 #4
Hmm kan ikke få din kode til at virke..
Jeg får disse fejl:
[Error] Unit2.pas(122): Incompatible types: 'IXMLDOMDocument' and 'TXMLDocument'
[Error] Unit2.pas(123): Undeclared identifier: 'LoadFromFile'
[Error] Unit2.pas(124): Undeclared identifier: 'DOMDocument'
[Error] Unit2.pas(124): Operator not applicable to this operand type
[Error] Unit2.pas(124): Missing operator or semicolon

uses
MSXML2_TLB

var
Doc : IXMLDOMDocument;
begin
  doc := TXMLDocument.Create(nil);
  doc.LoadFromFile('C:\d.xml');
  pris := (doc.DOMDocument As IDOMNodeSelect).selectNode('//tshirt/pris[@size="large"]/text()').nodeValue;
end;

-------

uses
MSXML2_TLB

var
Doc : IXMLDOMDocument;
link  : IXMLDOMNode;
begin
Doc := CoDomDocument.Create;
doc.load(xmldata);
pris := doc.documentElement.selectSingleNode('//tshirt/pris[@size="large]');
showmessage(pris);

Jeg har leget lidt med det.. og har prøvet ovenstående kode, men det kan jeg godt compile, men laver access vialation på sidste linie når jeg køre programmet
Avatar billede arne_v Ekspert
21. marts 2009 - 02:47 #5
Det virker hos mig.

Men jeg har også en anden uses.

program xml;

{$APPTYPE CONSOLE}

uses
  SysUtils, XMLDoc, XMLDom, ActiveX;

var
  doc : TXMLDocument;
  pris : string;

begin
  CoInitialize(nil);
  doc := TXMLDocument.Create(nil);
  doc.LoadFromFile('C:\d.xml');
  pris := (doc.DOMDocument As IDOMNodeSelect).selectNode('//tshirt/pris[@size="large"]/text()').nodeValue;
  CoUnInitialize;
  writeln(pris);
  readln;
end.
Avatar billede gtu Nybegynder
22. april 2009 - 19:33 #6
Arne kan du lave et svar
Avatar billede arne_v Ekspert
23. april 2009 - 14:33 #7
yes
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