要给 XML 添加节点,你可以使用 AddChild 方法或者是 CreateElement 方法,他们的返回结果是 IXMLNode 接口,然后你可以利用此接口添加枝叶节点、应用属性,等等等等。
有效合法的 XML 的必要条件之一是,它提供一个"<!DOCTYPE ... >"(文档类型声明)元件和"<?xml ... >"元件。
不幸的是,Delphi TXMLDocument 组件的实现,基本上使用的是微软 XML 解析器(Microsoft XML Parser),没有提供添加“ntDocType”(TNodeType 类型)节点的方法。
这个问题的解决方案之一是,通过访问 TXMLDocument 的 XML 属性,手动添加必需的节点,XML 属性实际上是一个 TStrings 对象。
首先,使用 AddChild 方法构建你的 XML 文档。
其次,把 XML 结果赋值给一个 TStringList 对象。然后使用 TStringList 的方法(如 Insert、Add)添加附加的“元件”和“节点”到 XML 字符串。
最后,将包含在 TStringList 中的 XML 保存到一个文件。
这儿是例子:
var这儿是 XML 结果:
sl : TStringList;
xmlDoc : TXMLDocument;
iNode : IXMLNode;
begin
xmlDoc := TXMLDocument.Create(nil) ;
try
xmlDoc.Active := true;
iNode := xmlDoc.AddChild('leaf') ;
iNode.Attributes['attrib1'] := 'value1';
iNode.Text := 'Node Text';
sl := TStringList.Create;
try
sl.Assign(xmlDoc.XML) ;
sl.Insert(0,'<!DOCTYPE ns:mys SYSTEM "myXML.dtd">') ;
sl.Insert(0,'<?xml version="1.0"?>') ;
sl.SaveToFile('c:\Test.xml') ;
finally
sl.Free;
end;
finally
xmlDoc := nil;
end;
end;
<?xml version="1.0"?>原文名称:How to Create the !DocType and ?XML Elements using TXmlDocument Delphi component
<!DOCTYPE ns:mys SYSTEM "myXML.dtd">
<leaf attrib1="value1">Node Text</leaf>
原文地址:http://delphi.about.com/od/adptips2006/qt/doctype_txmldoc.htm
原文日期:2006-10-2
没有评论:
发表评论