@@ -345,6 +345,7 @@ private static int DetectIndentation(string xmlPath)
345345 private static void ApplyAdd ( XElement addElement , XElement originalRoot )
346346 {
347347 string ? sel = addElement . Attribute ( "sel" ) ? . Value ;
348+ Logger . Debug ( $ "Applying add operation: '{ sel } '") ;
348349 if ( sel == null )
349350 {
350351 Logger . Warn ( "Add operation missing 'sel' attribute! Skipping operation." ) ;
@@ -357,7 +358,7 @@ private static void ApplyAdd(XElement addElement, XElement originalRoot)
357358 pos = "append" ;
358359 }
359360
360- Logger . Debug ( $ "Applying add operation: '{ sel } ' at { pos ! } ") ;
361+ Logger . Info ( $ "Applying add operation: '{ sel } ' at { pos ! } ") ;
361362
362363 var targetElements = originalRoot . XPathSelectElements ( sel ) ;
363364 if ( targetElements == null || ! targetElements . Any ( ) )
@@ -428,6 +429,7 @@ private static void ApplyAdd(XElement addElement, XElement originalRoot)
428429 private static void ApplyReplace ( XElement replaceElement , XElement originalRoot )
429430 {
430431 string ? sel = replaceElement . Attribute ( "sel" ) ? . Value ;
432+ Logger . Info ( $ "Applying replace operation: '{ sel } '") ;
431433 if ( sel == null )
432434 {
433435 Logger . Warn ( "Replace operation missing 'sel' attribute! Skipping operation." ) ;
@@ -447,38 +449,39 @@ private static void ApplyReplace(XElement replaceElement, XElement originalRoot)
447449 {
448450 if ( targetObj is XElement target )
449451 {
450- var newContent = replaceElement . Value ;
452+ string targetName = target . Name . LocalName ;
453+ XElement ? replaceSubElement = replaceElement . Element ( targetName ) ;
454+ XElement ? parent = target . Parent ;
451455 string targetInfo = GetElementInfo ( target ) ;
452- if ( ! string . IsNullOrEmpty ( newContent ) )
456+ string parentInfo = GetElementInfo ( parent ) ;
457+ if ( replaceSubElement != null )
453458 {
454- target . Value = newContent ;
455- Logger . Debug ( $ "Replaced text of element '{ targetInfo } ' with '{ newContent } '.") ;
459+ string replaceInfo = GetElementInfo ( replaceSubElement ) ;
460+ target . ReplaceWith ( replaceSubElement ) ;
461+ Logger . Info ( $ "Replaced element '{ targetInfo } ' with '{ replaceInfo } ' in '{ parentInfo } '.") ;
456462 }
457-
458- var newElement = replaceElement . Element ( "new" ) ;
459- if ( newElement != null )
463+ else
460464 {
461- XElement replacement = new XElement ( newElement ) ;
462- target . ReplaceWith ( replacement ) ;
463- Logger . Info ( $ "Replaced element '{ targetInfo } ' with '{ GetElementInfo ( replacement ) } '.") ;
465+ Logger . Warn ( $ "Can't process replacement for '{ targetInfo } ' in '{ parentInfo } '. Skipping operation.") ;
464466 }
465467 }
466468 else if ( targetObj is XText textNode )
467469 {
468470 textNode . Value = replaceElement . Value ;
469- Logger . Debug ( "Replaced text node." ) ;
471+ Logger . Info ( "Replaced text node." ) ;
470472 }
471473 else if ( targetObj is XAttribute attr )
472474 {
473475 attr . Value = replaceElement . Value ;
474- Logger . Debug ( $ "Replaced value of attribute '{ attr . Name } ' with '{ replaceElement . Value } '.") ;
476+ Logger . Info ( $ "Replaced value of attribute '{ attr . Name } ' with '{ replaceElement . Value } '.") ;
475477 }
476478 }
477479 }
478480
479481 private static void ApplyRemove ( XElement removeElement , XElement originalRoot )
480482 {
481483 string ? sel = removeElement . Attribute ( "sel" ) ? . Value ;
484+ Logger . Debug ( $ "Applying remove operation: '{ sel } '") ;
482485 if ( sel == null )
483486 {
484487 Logger . Warn ( "Remove operation missing 'sel' attribute! Skipping operation." ) ;
@@ -499,14 +502,15 @@ private static void ApplyRemove(XElement removeElement, XElement originalRoot)
499502 if ( targetObj is XElement target )
500503 {
501504 XElement ? parent = target . Parent ;
505+ string parentInfo = GetElementInfo ( parent ) ;
502506 string targetInfo = GetElementInfo ( target ) ;
503507 if ( parent == null )
504508 {
505509 Logger . Warn ( $ "Element '{ targetInfo } ' has no parent. Cannot remove.") ;
506510 continue ;
507511 }
508512 target . Remove ( ) ;
509- Logger . Debug ( $ "Removed element '{ targetInfo } ' from '{ parent . Name } '.") ;
513+ Logger . Info ( $ "Removed element '{ targetInfo } ' from '{ parentInfo } '.") ;
510514 }
511515 else if ( targetObj is XAttribute attr )
512516 {
@@ -518,12 +522,12 @@ private static void ApplyRemove(XElement removeElement, XElement originalRoot)
518522 continue ;
519523 }
520524 attr . Remove ( ) ;
521- Logger . Debug ( $ "Removed attribute '{ attr . Name } ' from '{ parentInfo } '.") ;
525+ Logger . Info ( $ "Removed attribute '{ attr . Name } ' from '{ parentInfo } '.") ;
522526 }
523527 else if ( targetObj is XText textNode )
524528 {
525529 textNode . Remove ( ) ;
526- Logger . Debug ( "Removed text node." ) ;
530+ Logger . Info ( "Removed text node." ) ;
527531 }
528532 }
529533 }
0 commit comments