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;
根据自己定义好的规则进行处理,创建XML文档
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;
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.
N:TXMLNode;N:=TXMLNode.Create(nil);
N.readFromString(S);
......