我有一个字符串是这样的,'<姓名>李四</姓名><性别>女</性别><年龄>43</年龄>'; ((如需要我可以在中间加回车换行))
怎么创建成一个xml对象
<data>
 <姓名>李四</姓名>
 <性别>女</性别>
 <年龄>43</年龄>
</data>

解决方案 »

  1.   

    用xmldocument创建,然后自己解析字符串,提价到xml的节点
      

  2.   

    这种情况肯定要自己解析字符串的
    根据自己定义好的规则进行处理,创建XML文档
      

  3.   


    function TXMLUtils.LoadFromString(var parser: TXMLDocument;
      const XMLData: string): Boolean;
    var
      StringStream: TStringStream;
    begin
      Result := False;
      if not Assigned(parser) or (Trim(XMLData) = '') then Exit;  StringStream := TStringStream.Create(AnsiToUtf8(XMLData));
      try
        if StringStream.Size = 0 then exit;
        try
          parser.LoadFromStream(StringStream);
        except
        end;
        Result := (not parser.IsEmptyDoc) and (parser.DocumentElement <> nil);
      finally
        StringStream.Free;
      end;
    end;
      

  4.   

    用xmldocument就好了,格式可以自己拟定。
      

  5.   

    直接拖一個xmldocument控件進行解析就可以了...
      

  6.   

    給LZ一個Delphi创建XML文档的DEMO...
    unit main;
    interface
    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls,XMLDoc,XMLIntf;
    type
    TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;
    var
    Form1: TForm1;
    implementation
    {$R *.dfm}
    procedure TForm1.Button1Click(Sender: TObject);
    var
    XMLDoc : TXMLDocument;
    root : IXMLNode;
    departmentNode : IXMLNode;
    coulmnNode : IXMLNode;
    i : integer;
    begin
    XMLDoc := TXMLDocument.Create(nil);
    try
    XMLDoc.Active := True;
    XMLDoc.Version := \\\'1.0\\\';
    XMLDoc.Encoding := \\\'GB2312\\\';
    XMLDoc.Options := [doNodeAutoCreate,doNodeAutoIndent,doAttrNull,doAutoPrefix,doNamespaceDecl];
    XMLDoc.DocumentElement := XMLDoc.CreateNode(\\\'ufinterface\\\');
    root := XMLDoc.DocumentElement;
    root.SetAttributeNS(\\\'sender\\\',\\\'\\\',\\\'001\\\');
    root.SetAttributeNS(\\\'receiver\\\',\\\'\\\',\\\'u8\\\');
    root.SetAttributeNS(\\\'roottag\\\',\\\'\\\',\\\'department\\\');
    root.SetAttributeNS(\\\'docid\\\',\\\'\\\',\\\'0.7055475\\\');
    root.SetAttributeNS(\\\'proc\\\',\\\'\\\',\\\'Query\\\');
    root.SetAttributeNS(\\\'codeexchanged\\\',\\\'\\\',\\\'N\\\');
    root.SetAttributeNS(\\\'exportneedexch\\\',\\\'\\\',\\\'N\\\');
    root.SetAttributeNS(\\\'display\\\',\\\'\\\',\\\'部门档案\\\');
    root.SetAttributeNS(\\\'family\\\',\\\'\\\',\\\'基础档案\\\');
    root.SetAttributeNS(\\\'billtype\\\',\\\'\\\',\\\'\\\');
    for i:=0 to 5 do
    begin
    departmentNode := root.AddChild(\\\'department\\\');
    coulmnNode := departmentNode.AddChild(\\\'code\\\');
    coulmnNode.SetNodeValue(\\\'5\\\');
    coulmnNode := departmentNode.AddChild(\\\'endflag\\\');
    coulmnNode.SetNodeValue(\\\'1\\\');
    coulmnNode := departmentNode.AddChild(\\\'name\\\');
    coulmnNode.SetNodeValue(\\\'事业部\\\');
    coulmnNode := departmentNode.AddChild(\\\'rank\\\');
    coulmnNode.SetNodeValue(\\\'1\\\');
    end;
    XMLDoc.SaveToFile(\\\'D:\\sss.xml\\\');
    finally
    XMLDoc.Free;
    end;
    end;
    end.
     
      

  7.   

    NativeXMLvar
    N:TXMLNode;N:=TXMLNode.Create(nil);
    N.readFromString(S);
    ......
      

  8.   

    我用了 IXMLDOMDocument2 的loadxml了.