Hej!
Hvis jeg har en attribut, som er oprettet med:
var
  Node, Attr: IXMLNode;
Hvordan laver jeg så om på attributtens navn? Altså fx:
<element navn='værdi'>
Jeg har prøvet med Attr.NodeName := 'string';
men den siger at NodeName er readonly...
Skal jeg lave den på en anden måde?
I kan lige få hele min procedure:
procedure Tmainform.CreateOption(Option: String; Value: String = '');
var
  Node, Attr: IXMLNode;
begin
  // Opret en indstilling
  try
    if not OptionExists(Option) then
    begin
      Attr.NodeName := 'name
      Attr.Text := Option;
      Node.AttributeNodes.Add(Attr);
      Node.NodeName := 'option';
      Node.Text := Value;
      XMLSettings.ChildNodes.Nodes[1].ChildNodes.Add(Node);
      XMLSettings.SaveToFile();
    end;
  except
    ShowWarning('Kan ikke oprette indstilling.');
  end;
end;
Håber i forstår.
Hilsen Mark 
Hej Mark,
Først og fremmest så opretter (allokere) du ikke en ny node, hvilket vil sige at du til går et interface som peger et tilfældigt sted hen.
Når du opretter din node (CreateElement) så kan du her angive navnet på denne.
Jeg har dog ikke brugt Delphi's egen XML parser men i stedet brugt den fra Microsoft. Her er et eks. på hvordan det gøres:
procedure CreateAttrib(ADOM : IXMLDOMDocument2; ANode : IXMLDOMNode; AAttrName, AValue : String);
var
  AttrNode  : IXMLDOMNode;
begin
  AttrNode := ADOM.createNode(NODE_ATTRIBUTE,AAttrName,'');
  AttrNode.nodeValue := AValue;
  ANode.attributes.setNamedItem(AttrNode);
end;
function CreateElement(ADOM : IXMLDOMDocument2; AElementName : String) : IXMLDOMNode;
var
  ElemNode  : IXMLDOMNode;
begin
  ElemNode := ADOM.createNode(NODE_ELEMENT,AElementName,'');
  Result := ElemNode;
end;
function CreateXML : String;
var
  DOMDoc  : TDOMDocument30;
  N1, N2   : IXMLDOMNode;
  DOM     : IXMLDOMDocument2;
  I       : Integer;
begin
  DOMDoc := TDOMDocument30.Create(nil);
  CoInitialize(nil);
  DOM := DOMDoc.DefaultInterface;
  DOM.async := False;
  N1 := CreateElement(DOM, 'ROOT_ELEMENT');
  if N1 <> nil then
  begin
    CreateAttrib(DOM, N1, 'User', 'Mark');
    CreateAttrib(DOM, N1, 'Password', 'none');
    DOM.appendChild(N1);
    N2 := CreateElement(DOM, 'CHILD_ELEMENT');
    CreateAttrib(DOM, N2, 'Name', 'Michael');
    CreateAttrib(DOM, N2, 'Location', 'Udvikleren.dk');
    N1.appendChild(N2);
  end;
  Result := DOM.xml;
  N1 := nil;
  N2 := nil;
  DOM := nil;
  DOMDoc.Free;
  CoUninitialize;
end;
Selv om du bruger Delphi's egen så burde det ligne MEGET den koden du ser for oven.
Håber det hjælper.
/Michael.
[Redigeret d. 09/01-04 18:23:46 af Michael Skovslund]