NativeXml V4.02根节点添加属性问题
这是写XML的部分代码
- Delphi(Pascal) code
//设置导出到XML中的XML头function DoSetXMLHead(AData: TdataSet): Boolean;var FNodeXML, SNodeXML: TXmlNode; i: Integer;begin Result := False; if not Assigned(XMLObject) then XMLObject := TNativeXml.Create(Self); try XMLObject := TNativeXml.CreateName('DATAPACKET'); XMLObject.AttrText('Version', '2.0'); XMLObject.IndentString := ' '; //缩进空格数 XMLObject.XmlFormat := xfReadable; FNodeXML := XMLObject.Root.NodeNew('METADATA'); SNodeXML := FNodeXML.NodeNew('FIELDS'); for i := 0 to AData.FieldCount - 1 do begin with SNodeXML.NodeNew('FIELD') do begin AttributeAdd('attrname', AData.Fields[i].FieldName); AttributeAdd('fieldtype', 'string'); //待定 AttributeAdd('width', '20'); //待定 end; end; Result := True; except if XMLObject <> nil then XMLObject.Free; end;end;这样生成出来的结果如下:
- XML code
<?xml version="1.0" encoding="utf-8"?><DATAPACKET> //注意:这里的Version=2.0没有写入 <METADATA> <FIELDS> <FIELD attrname="ProviderID" fieldtype="string" width="20"/> <FIELD attrname="TypeID" fieldtype="string" width="20"/> <FIELD attrname="TypeName" fieldtype="string" width="20"/> <FIELD attrname="Caption" fieldtype="string" width="20"/> <FIELD attrname="Length" fieldtype="string" width="20"/> </FIELDS> </METADATA> <ROWDATA> </ROWDATA></DATAPACKET>
在上述代码中,通过
XMLObject := TNativeXml.CreateName('DATAPACKET');
XMLObject.AttrText('Version', '2.0');
写入不了根节点的值,请问这是什么原因造成的?
[解决办法]
- Delphi(Pascal) code
{ // XMLObject.AttrText('Version', '2.0');} XMLObject.Root.AttributeAdd('Version', '2.0');