AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Probleme beim Attribute finden

Ein Thema von t0mmy · begonnen am 28. Nov 2010 · letzter Beitrag vom 11. Dez 2010
Antwort Antwort
t0mmy

Registriert seit: 28. Jul 2010
431 Beiträge
 
Delphi 2010 Architect
 
#1

Probleme beim Attribute finden

  Alt 28. Nov 2010, 00:36
Hallo

Ich hab folgende Ausschnitt aus einer XML-Datei:

Code:
<BuilderList>
  <Set LineNo="1">
    <Pname>KP_R02</Pname>
    <Count>3</Count>
    <Program>KP</Program>
    <PInsertion>100,200,300</PInsertion>
    </Set>

  <Set LineNo="2">
    <Pname>KP_R02</Pname>
    <Count>2</Count>
    <Program>KP</Program>
    <PInsertion>0,0,0</PInsertion>
    </Set>

  <Set LineNo="3">
    <Pname>KP_R01</Pname>
    <Count>1</Count>
    <Program>KP</Program>
    <PInsertion>0,0,0</PInsertion>
    </Set>
Ich bin dabei das Attribute "PInsertion" der jeweiligen <Set LineNo="#"> zu ändern.
Beim ersten habe ich es geschafft das Attribute zu finden und zu ändern:

Delphi-Quellcode:
if aapp <> nil then
    begin
      aapp := aapp.ChildNodes.FindNode('BuilderList');
    end;
    if aapp <> nil then
    begin
      aapp := aapp.ChildNodes.FindNode('Set');
    end;
    if aapp <> nil then
    begin
      aapp := aapp.ChildNodes.FindNode('PInsertion');
    end;
    if aapp <> nil then
    begin
      aapp.text:= IntToStr(varx)+','+IntToStr(vary)+','+IntToStr(varz);
    end;
Nun würd ich gern wissen warum ich es nicht bei den anderen <Set LineNo="2"> und Set LineNo="3">
mit dem folgenden code nicht schaffe. Ich hoffe einer von euch hat die Lösung oder entdeckt meinen fehler

Delphi-Quellcode:
if aapp <> nil then
    begin
      aapp := aapp.ChildNodes.FindNode('BuilderList');
    end;
    if aapp <> nil then
    begin
      aapp := aapp.ChildNodes.FindNode('Set');
    end;
    if aapp <> nil then
    begin
    aapp := aapp.AttributeNodes.FindNode('LineNo="2"');
    end;
    aapp.AttributeNodes.
    if aapp <> nil then
    begin
      aapp := aapp.ChildNodes.FindNode('PInsertion');
    end;
    if aapp <> nil then
    begin
      aapp.text:= IntToStr(varx)+','+IntToStr(vary)+','+IntToStr(varz);
    end;
Danke schon mal im Vorraus

Geändert von t0mmy (28. Nov 2010 um 00:37 Uhr) Grund: PInsertion
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#2

AW: Probleme beim Attribute finden

  Alt 28. Nov 2010, 01:42
In XML gibt es Elemente
<element>das ist ein Element</element>
und Attribute
<nocheinelement attribut1="ich bin ein attribut" attribut2="nr 2" />
Wir reden hier also von Elementen.
Aber du brauchst zunächst einmal die Grundlagen von XPath.
Tutorial
Du brauchst ca. einen Tag, bis du die Grundlagen verstanden hast.
XPath ist quasi das was SQL für Datenbanken ist; eine Syntax oder Sprache zur Abfrage von Daten.
Nimm Dir die Zeit XPath zu lernen und dann komm zurück um nach den Details zu fragen.
  Mit Zitat antworten Zitat
t0mmy

Registriert seit: 28. Jul 2010
431 Beiträge
 
Delphi 2010 Architect
 
#3

AW: Probleme beim Attribute finden

  Alt 11. Dez 2010, 00:53
Hallo.. Danke dein Link hat mir bisschen weitergeholfen hat zwar ne zeitlang gedauert bis ich es verstanden habe..(hoff ich zumindest) aber trotzdem check ichs nicht so ganz..

ich hab da mal eine andere Methode ausprobiert:

Delphi-Quellcode:
    aapp := alxml.DocumentElement.ChildNodes['Set'];
    if aapp.HasAttribute('LineNo')
      and aapp.Attributes['LineNo'] = '2then
    begin
    aapp := aapp.ChildNodes.FindNode('PInsertion');
    if aapp <> nil then
      begin
        aapp.text:= IntToStr(varx)+','+IntToStr(vary)+','+IntToStr(varz);
      end;
    end;
diese Funktioniert auch nicht so richtig..
was mache ich falsch ... verzweifel schon
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.603 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Probleme beim Attribute finden

  Alt 11. Dez 2010, 01:16
diese Funktioniert auch nicht so richtig..
Was heißt "nicht so richtig"?
Wenn das Gezeigte dein genau Code ist, womit du es probiert hast (also nichts Verfälschtes/Vereinfachtes), dann kann ich mir den/einen Fehler zwar denken, aber dennoch ...
was mache ich falsch
Uns eine ordentliche Fehlermeldung vorzuenthalten?
- was für eine Fehlermaldung wird angezeigt
- und oder was läuft wie falsch (Fehlerbeschreibung)

verzweifel schon
ich auch
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
t0mmy

Registriert seit: 28. Jul 2010
431 Beiträge
 
Delphi 2010 Architect
 
#5

AW: Probleme beim Attribute finden

  Alt 11. Dez 2010, 11:55
Das Programm so wie oben gepostet funktioniert fehlerfrei.. also es kommt kein Fehler, doch es ändert mir den Wert beim Element bei Set-->LineNo="2"-->PInsertion nicht... hmm
Ich hab schon ein paar methoden ausprobiert..aber die ist die für mich die logischte, aber da tut sich halt nichts..

Geändert von t0mmy (11. Dez 2010 um 11:56 Uhr) Grund: Wert
  Mit Zitat antworten Zitat
t0mmy

Registriert seit: 28. Jul 2010
431 Beiträge
 
Delphi 2010 Architect
 
#6

AW: Probleme beim Attribute finden

  Alt 11. Dez 2010, 13:37
Okay ich formulier mal eine andere Frage.
Wie finde ich das Attribut --> <Set LineNo="2"> dann kann ich dort nach <PInsertion> suchen und es ändern.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 +2. Es ist jetzt 05:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf