AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

xml-node-attribute

Ein Thema von salem01 · begonnen am 17. Dez 2005 · letzter Beitrag vom 17. Dez 2005
 
salem01

Registriert seit: 8. Okt 2005
19 Beiträge
 
#1

xml-node-attribute

  Alt 17. Dez 2005, 16:32
hallo zusammen,
mal wieder wende ich mich an euch .

ich habe die xml-datei attribute.xml und versuche über eine delphi fkt. (durch button-klick) einen knoten mit seinen unterknoten zu kopieren und anzuhängen wobei das attribut id immer um eins erhöht werden soll (also alles eins zu eins kopieren mit einer inkrementierten id!).
die xml-struktur sieht folgerndermassen aus:
XML-Code:
<attribute>
  <stammdaten id="0">
    .....
  </stammdaten>
  ......
  <autodaten id="0">
    .....
  </autodaten>
  ......
</attribute>
meine dalphi-6-fkt sieht so aus:
Delphi-Quellcode:
function FahrzeugRecordAnlegen(var attributeXML: string): String;
 var
   XMLDOMAttribute : IXMLDOMDocument;
   XMLDOMAutoDatenNode : IXMLDOMNode;
   XMLDOMAutoDatenNodeNeu : IXMLDOMNode;
   XMLDOMNodeListIDs: IXMLDOMNodeList;
   XMLDOMNodeId : IXMLDOMNode;
   newID : integer;
begin

  XMLDOMAttribute := CoDOMDocument40.Create;
  XMLDOMAttribute.async := false;
  XMLDOMAttribute.loadXML(attributeXML);

  XMLDOMNodeListIDs := XMLDOMAttribute.selectNodes('//autodaten/@id');
  XMLDOMNodeId := XMLDOMNodeListIDs.nextNode();
   newID:= 0;

  while(NOT(XMLDOMNodeId=NIL)) do
  begin
    if(StrToInt(XMLDOMNodeId.nodeTypedValue) > newID) then
    begin
      newID := StrToInt(XMLDOMNodeId.nodeTypedValue);
    end;
    XMLDOMNodeId := XMLDOMNodeListIDs.nextNode();
  end;
   newID := newID+1;

   XMLDOMAutoDatenNode:= XMLDOMAttribute.selectSingleNode('//autodaten');
   XMLDOMAutoDatenNodeNeu:= XMLDOMAutoDatenNode.cloneNode(true);

   XMLDOMAutoDatenNodeNeu.selectSingleNode('//autodaten/@id').text := IntToStr(newID);

   XMLDOMAttribute.selectSingleNode('/attribute').appendChild(XMLDOMAutoDatenNodeNeu);

  result := XMLDOMAttribute.xml;
 end;
ich habe dadurch folgendes ergebnis erhofft
XML-Code:
<attribute>
  <stammdaten id="0">
    .....
  </stammdaten>
  ......
  <autodaten id="0">
    .....
  </autodaten>
  <autodaten id="1">
    .....
  </autodaten>
  ......
</attribute>
bekomme aber leider die fehlermeldung
Zugriffsverletzung bei Adresse 004BA08D in Modul 'PCapi.exe'. Lesen von Adresse 00000000 benutze ich in delphi irgend eine falsche methode? ich habe es auch mit
XMLDOMAutoDatenNodeNeu.selectSingleNode('//autodaten/@id').nodeValue := IntToStr(newID);
ausprobiert, aber leider auch ohne erfolg .

danke im vorraus.
LG.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz