Skip to content

Commit

Permalink
#1050 fix bug by up and down of childrens
Browse files Browse the repository at this point in the history
  • Loading branch information
DavidBlaa committed Feb 22, 2023
1 parent bdaab10 commit d33025a
Showing 1 changed file with 45 additions and 6 deletions.
51 changes: 45 additions & 6 deletions Components/XML/BExIS.Xml.Helpers/XmlMetadataWriter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -790,21 +790,60 @@ public XDocument Change(XDocument metadataXml, string firstXPath, string secondX
{
XmlDocument xmlDocument = XmlUtility.ToXmlDocument(metadataXml);

XmlNode first = xmlDocument.SelectSingleNode(firstXPath);
XmlNode next = xmlDocument.SelectSingleNode(secondXPath);
XmlElement first = xmlDocument.SelectSingleNode(firstXPath) as XmlElement;
XmlElement next = xmlDocument.SelectSingleNode(secondXPath) as XmlElement;

string contentFromFirst = first.InnerXml;
string contentFromNext = next.InnerXml;
XmlNode parent = first.ParentNode;


int firstI = getIndexOfChild(parent.ChildNodes, first);
int nextI = getIndexOfChild(parent.ChildNodes, next);

if (firstI < nextI) //first before next
{
var clone = first.Clone(); // copie first
parent.RemoveChild(first);
parent.InsertAfter(clone, next);
}
else //first after next
{
var clone = first.Clone(); // copie first
parent.RemoveChild(first);
parent.InsertBefore(clone, next);
}

// reset attribute number
resetNumberAttr(parent.ChildNodes);

first.InnerXml = contentFromNext;
next.InnerXml = contentFromFirst;

metadataXml = XmlUtility.ToXDocument(xmlDocument);
}

return metadataXml;
}

private int getIndexOfChild(XmlNodeList list, XmlElement element)
{
for (int i = 0; i < list.Count; i++)
{
if (element == list[i]) {
return i;
}
}

return 0;
}

private void resetNumberAttr(XmlNodeList list)
{
for (int i = 0; i < list.Count; i++)
{
XmlElement element = (XmlElement)list[i];
int number = i + 1;
element.SetAttribute("number", number.ToString());
}
}

#region update

/// <summary>
Expand Down

0 comments on commit d33025a

Please sign in to comment.