TXMLDocumentResync (C++)

From RAD Studio Code Examples
Jump to: navigation, search

Description

The following example uses the Resync function.

Code

void Test_Resync() {
	_di_IXMLDocument document = interface_cast<Xmlintf::IXMLDocument>
		(new TXMLDocument(NULL));

	const String s = "<TestElement><!-- TestComment --></TestElement>";
	document->LoadFromXML(s);

	// Cache the document element ChildNodes.Count property.
	// Otherwise resync is unnecessary.
	const int count = document->DocumentElement->ChildNodes->Count;

	// Modify the document element child nodes through the DOM interface.
	_di_IDOMCDATASection node;
	const int createResult = document->DOMDocument->createCDATASection
		("test node", node);
	_di_IDOMNode resultAppend;
	document->DocumentElement->DOMNode->appendChild(node, resultAppend);

	// The two child lists are now different.
	printf("document->DocumentElement->ChildNodes->Count: %d\n",
		document->DocumentElement->ChildNodes->Count);
	printf("document->DocumentElement->DOMNode->childNodes->length: %d\n",
		document->DocumentElement->DOMNode->childNodes->length);

	document->Resync();
	printf("\nAfter resync...\n");

	// The two child lists are now synchronized.
	printf("document->DocumentElement->ChildNodes->Count: %d\n",
		document->DocumentElement->ChildNodes->Count);
	printf("document->DocumentElement->DOMNode->childNodes->length: %d\n",
		document->DocumentElement->DOMNode->childNodes->length);
}

Uses