@@ -441,6 +441,7 @@ private void ApplyAdd(XElement addElement, XElement originalRoot)
441441 switch ( pos )
442442 {
443443 case "before" :
444+ case "after" :
444445 if (
445446 ( ParsedOptions == null || ! ParsedOptions . AllowDoubles )
446447 && targetElement
@@ -455,48 +456,19 @@ private void ApplyAdd(XElement addElement, XElement originalRoot)
455456 Logger . Warn ( $ "Element '{ clonedInfo } ' already exists in '{ parentInfo } '. Skipping.") ;
456457 continue ;
457458 }
458- targetElement . AddBeforeSelf ( cloned ) ;
459- Logger . Info ( $ "Added new element '{ clonedInfo } ' before '{ targetInfo } ' in '{ parentInfo } '.") ;
460- latestAdded = cloned ;
461- break ;
462- case "after" :
463- if (
464- ( ParsedOptions == null || ! ParsedOptions . AllowDoubles )
465- && targetElement
466- . Parent ! . Elements ( )
467- . Any ( e =>
468- e . Name == cloned . Name
469- && e . Attributes ( ) . All ( a => cloned . Attribute ( a . Name ) ? . Value == a . Value )
470- && cloned . Attributes ( ) . All ( a => e . Attribute ( a . Name ) ? . Value == a . Value )
471- )
472- )
459+ if ( pos == "before" )
473460 {
474- Logger . Warn ( $ "Element ' { clonedInfo } ' already exists in ' { parentInfo } '. Skipping." ) ;
475- continue ;
461+ targetElement . AddBeforeSelf ( cloned ) ;
462+ Logger . Info ( $ "Added new element ' { clonedInfo } ' before ' { targetInfo } ' in ' { parentInfo } '." ) ;
476463 }
477- targetElement . AddAfterSelf ( cloned ) ;
478- Logger . Info ( $ "Added new element '{ clonedInfo } ' after '{ targetInfo } ' in '{ parentInfo } '.") ;
479- latestAdded = cloned ;
480- break ;
481- case "prepend" :
482- if (
483- ( ParsedOptions == null || ! ParsedOptions . AllowDoubles )
484- && targetElement
485- . Elements ( )
486- . Any ( e =>
487- e . Name == cloned . Name
488- && e . Attributes ( ) . All ( a => cloned . Attribute ( a . Name ) ? . Value == a . Value )
489- && cloned . Attributes ( ) . All ( a => e . Attribute ( a . Name ) ? . Value == a . Value )
490- )
491- )
464+ else
492465 {
493- Logger . Warn ( $ "Element ' { clonedInfo } ' already exists in ' { targetInfo } '. Skipping." ) ;
494- continue ;
466+ targetElement . AddAfterSelf ( cloned ) ;
467+ Logger . Info ( $ "Added new element ' { clonedInfo } ' after ' { targetInfo } ' in ' { parentInfo } '." ) ;
495468 }
496- targetElement . AddFirst ( cloned ) ;
497- Logger . Info ( $ "Prepended new element '{ clonedInfo } ' to '{ targetInfo } '.") ;
498469 latestAdded = cloned ;
499470 break ;
471+ case "prepend" :
500472 case "append" :
501473 if (
502474 ( ParsedOptions == null || ! ParsedOptions . AllowDoubles )
@@ -512,8 +484,16 @@ private void ApplyAdd(XElement addElement, XElement originalRoot)
512484 Logger . Warn ( $ "Element '{ clonedInfo } ' already exists in '{ targetInfo } '. Skipping.") ;
513485 continue ;
514486 }
515- targetElement . Add ( cloned ) ;
516- Logger . Info ( $ "Appended new element '{ clonedInfo } ' to '{ targetInfo } '.") ;
487+ if ( pos == "prepend" )
488+ {
489+ targetElement . AddFirst ( cloned ) ;
490+ Logger . Info ( $ "Prepended new element '{ clonedInfo } ' to '{ targetInfo } '.") ;
491+ }
492+ else
493+ {
494+ targetElement . Add ( cloned ) ;
495+ Logger . Info ( $ "Appended new element '{ clonedInfo } ' to '{ targetInfo } '.") ;
496+ }
517497 latestAdded = cloned ;
518498 break ;
519499 default :
0 commit comments