Einzelnen Beitrag anzeigen

MathiasSimmack
(Gast)

n/a Beiträge
 
#8

Re: Von MSXML zu OmniXML kleines Problem aufgetreten

  Alt 18. Mai 2004, 22:43
1. Das hier
Zitat:
XMLDoc.DocumentElement := XMLDoc.CreateElement('daten');
ist relativ sinnlos, weil du danach den XML-Code sowieso aus der Datei holst, bzw. im Code erzeugst.

2. Bist du sicher, dass dein Dokument so aufgebaut ist
Code:
<Daten>
  <prowo>
    <daten1>
      <!--
         1 als Beispiel, weil ich nicht weiß, was
         "id := Tabelle.Items[Tabelle.ItemIndex].Caption;"
         für eine ID zurückgibt
      -->
    </daten1>
  </prowo>
</Daten>
Zumindest sucht deine XPath-Anweisung nach diesem Knoten
Zitat:
node := XMLDoc.documentElement.selectSingleNode('prowo/daten'+id);
3. Das hier ist albern:
Zitat:
if node = nil then showmessage('is da');
Anders herum wird ein Schuh draus. Wenn "node" ungleich nil ist, dann ist der Knoten da.

4. Ist nicht gesagt, dass der Knoten "daten" dann auch existiert
Zitat:
node.selectSingleNode('daten').text := 'Hallo';
Zur Sicherheit solltest du so vorgehen:
Delphi-Quellcode:
subnode := node.selectSingleNode('daten');

// Knoten existiert
if(subnode <> nil) then
  subnode.text := 'Hallo'
else
// Knoten existiert nicht, also: anlegen
begin
  subnode := XMLDoc.createElement('daten');
  if(subnode <> nil) then
  begin
    subnode.text := 'Hallo';
    node.appendChild(subnode);
  end;
end;
(Angabe ohne Gewähr, weil ich an MS-XML gedacht habe.)
  Mit Zitat antworten Zitat