- <xmlpackage>
- <lesson1 lesson1="sdfgh">
<a a="1" />
<b b="2" />
<c c="3" />
<d d="4" />
</lesson1>
</xmlpackage>
XML格式如上。 怎么添加新的lesson呢?我用insert总报错呢。
- <lesson1 lesson1="sdfgh">
<a a="1" />
<b b="2" />
<c c="3" />
<d d="4" />
</lesson1>
</xmlpackage>
XML格式如上。 怎么添加新的lesson呢?我用insert总报错呢。
var
node : ixmlNode;
begin
node := xml.DocumentElement;
xml.DocumentElement := Node;
Node := Node.AddChild('lesson');
uses msxml;procedure TForm1.FormCreate(Sender: TObject);
var
xml: IXMLDOMDocument;
xmlNode, childNode: IXMLDOMNode;
xmlElement: IXMLDOMElement;
begin
xml := CoDOMDocument.Create;
xml.load('c:\1.xml');
xmlNode := xml.selectSingleNode('/xmlpackage');
//添加lession2
ChildNode := xmlnode.appendChild(xml.createElement('lession2'));
xmlelement := ChildNode as IXMLDOMElement;
xmlelement.setAttribute('lession2', 'asdfadfasf');
//添加lession2子结点
xmlNode := childNode; ChildNode := xmlnode.appendChild(xml.createElement('a'));
xmlelement := ChildNode as IXMLDOMElement;
xmlelement.setAttribute('a', '1'); ChildNode := xmlnode.appendChild(xml.createElement('b'));
xmlelement := ChildNode as IXMLDOMElement;
xmlelement.setAttribute('b', '2'); ChildNode := xmlnode.appendChild(xml.createElement('c'));
xmlelement := ChildNode as IXMLDOMElement;
xmlelement.setAttribute('c', '3'); ChildNode := xmlnode.appendChild(xml.createElement('d'));
xmlelement := ChildNode as IXMLDOMElement;
xmlelement.setAttribute('d', '4'); xml.save('c:\1.xml');
end;
var
Internal: IXMLDOMElement;
begin
Internal:=IXMLDOMElement(Parent.AppendChild(FXMLDoc.CreateElement(Field)));
Internal.AppendChild(FXMLDoc.CreateTextNode(Value));
end;
//填加一个节点到后面
procedure TXMLOption.AppendProtocol(newptl: RecProtocol);
var
xnode:IXMLDOMElement;
xroot:IXMLDOMElement;
begin
if FActive then
begin
xroot:=FXMLDoc.documentElement;
xnode :=IXMLDOMElement(xroot.AppendChild(FXMLDoc.CreateElement(ItemTag)));
xnode.setAttribute(XML_TypeId, newptl.P_TypeId);
AddSimpleElement(xnode, XML_Id, newptl.P_Id);
AddSimpleElement(xnode, XML_Name, newptl.P_Name);
AddSimpleElement(xnode, XML_CtrlCode, newptl.P_CtrlCode);
AddSimpleElement(xnode, XML_FunCode, newptl.P_FunCode);
AddSimpleElement(xnode, XML_DataLength, newptl.P_DataLength);
AddSimpleElement(xnode, XML_DataFormat, newptl.P_DataFormat);
AddSimpleElement(xnode, XML_Unit, newptl.P_Unit);
AddSimpleElement(xnode, XML_InitValue, newptl.P_InitValue);
AddSimpleElement(xnode, XML_RwFlag, newptl.P_RwFlag);
AddSimpleElement(xnode, XML_LPwd, newptl.P_LPwd);
AddSimpleElement(xnode, XML_HPwd, newptl.P_HPwd);
AddSimpleElement(xnode, XML_Help, newptl.P_Help);
FXMLDoc.save(FFilename);
end;
end;
node,tempNode : ixmlNode;
XML:TXMLDocument;
begin
XML:=TXMLDocument.Create(self);
try
XML.LoadFromFile('');
node := XML.DocumentElement.ChildNodes.FindNode(xmlpackage);
if node <> nil then
begin
tempNode := Node.AddChild(lesson);
tempNode.Attributes('lesson1') := 'sdfgh';
end;
finally
XML.Free ;
end;
end;
就是没会用,呵呵,知道的告诉下吧,谢谢大家的帮忙!
procedure TForm1.Button1Click(Sender: TObject);
var
Node,RootNode:IXMLNode;
NewNode:IXMLNode;
begin
XMLDocument.Active:=True;
RootNode:=XMLDocument.CreateNode('xmlpackage');
XMLDocument.DocumentElement:=RootNode;
Node:=XMLDocument.CreateNode('lesson1');
XMLDocument.DocumentElement.ChildNodes.Add(Node);
Node.ChildNodes.Add(XMLDocument.CreateNode('Hello....',ntText));
Node.AttributeNodes.Add(XMLDocument.CreateNode('length',ntAttribute));
Node.SetAttribute('length','16'); NewNode:=XMLDocument.CreateNode('lesson2');
XMLDocument.DocumentElement.ChildNodes.Insert(1,NewNode);
NewNode.ChildNodes.Add(XMLDocument.CreateNode('Hello....hhhhhhh',ntText));
XMLDocument.SaveToFile('C:\test.xml');
end;
1--代表第2个节点位置添加。。
不知道楼主是不是要这样的效果???
uses msxml;
..........
var
xml: IXMLDOMDocument;
nLesson1Element,nLesson2Element: IXMLDOMElement;
begin
xml := CoDOMDocument.Create;
xml.loadXML('<xmlpackage>' +
'<lesson1 lesson1="sdfgh">' +
' <a a="1" />' +
' <b b="2" />' +
' <c c="3" />' +
' <d d="4" />' +
'</lesson1>' +
'</xmlpackage>');
nLesson1Element:=xml.selectSingleNode('/xmlpackage/lesson1')as IXMLDOMElement;
nLesson2Element:=xml.createElement('lesson2');
nLesson2Element.setAttribute('lession2','abcd');
xml.documentElement.insertBefore(nLesson2Element,nLesson1Element);
ShowMessage(xml.xml);
xml := nil;
end;