правильный способ справиться с этим - использовать фактическую XML библиотеку, например собственный Delphi компонент TXMLDocument
или IXMLDocument
интерфейс (или любое количество сторонних XML библиотек, доступных для Delphi). Вы можете загрузить в него свой XML, затем найти IXMLNode
для элемента <node1>
(или любого другого элемента, который вы хотите), а затем прочитать его свойство XML
по мере необходимости.
Например:
uses
..., Xml.XMLIntf, Xml.XMLDoc;
var
XML: DOMString;
Doc: IXMLDocument;
Node: IXMLNode;
begin
XML := '<?xml version="1.0"?><main><node1>...</node1></main>';
Doc := LoadXMLData(XML);
Node := Doc.DocumentElement; // <main>
Node := Node.ChildNodes['node1'];
XML := Node.XML;
ShowMessage(XML);
end;
Или:
uses
..., Xml.XMLIntf, Xml.xmldom, Xml.XMLDoc;
var
XML: DOMString;
Doc: IXMLDocument;
Node: IXMLNode;
XPath: IDOMNodeSelect;
domNode: IDOMNode;
begin
XML := '<?xml version="1.0"?><main><node1>...</node1></main>';
Doc := LoadXMLData(XML);
XPath := Doc.DocumentElement.DOMNode as IDOMNodeSelect;
domNode := XPath.selectNode('/main/node1');
Result := TXMLNode.Create(domNode, nil, (Doc as IXmlDocumentAccess).DocumentObject);
XML := Node.XML;
ShowMessage(XML);
end;