Remove Empty XML Nodes from XMLPort
Views (2371)
XMLPort is a nice tool that allows you quickly import and export xml files. The tool has some shortcomings, but there is always a work around it.
For an implementation recently I had to export an xml and it could not have empty xml nodes. For example. Bellow is an xml file created by xmlport
<root>
<Books>
<Book>
<Title>When the moon is low</Title>
<Author>Nadia Hashimi</Author>
<Category>Fiction</Category>
<Summary></Summary>
<Publisher>HarperCollins</Publisher>
<Year>2018</Year>
<ISBN>9780062421951</ISBN>
</Book>
</Books>
</root>
as you can see above the <Summary></Summary> is empty and there is no way in XMLPORT to remove this node.
The workaround is to add post processing process that removes the nodes from xml file.
xmlDoc := xmlDoc.XmlDocument;
xmlDoc.Load(FileName);
XMLNodeList := xmlDoc.SelectNodes('//Summary[. = ""]');
FOR i := 0 TO XMLNodeList.Count - 1 DO BEGIN
XMLNode := XMLNodeList.Item(i);
XMLNode.ParentNode().RemoveChild(XMLNode);
END;
xmlDoc.Save(FileName);
Xmlport has a property for each line called MinOccurs But it only works for importing file. I wish they would have a new property or add to this property to not write the node if it's empty.

Like
Report
*This post is locked for comments