@@ -570,3 +570,86 @@ fn issue683() {
570
570
}
571
571
) ;
572
572
}
573
+
574
+ /// Regression test for https://github.com/tafia/quick-xml/issues/868.
575
+ #[ test]
576
+ fn issue868 ( ) {
577
+ #[ derive( Debug , PartialEq , Deserialize ) ]
578
+ #[ serde( rename = "root" ) ]
579
+ pub struct Root {
580
+ #[ serde( rename = "key" ) ]
581
+ pub key : Key ,
582
+ }
583
+
584
+ #[ derive( Debug , PartialEq , Deserialize ) ]
585
+ #[ serde( rename = "key" ) ]
586
+ pub struct Key {
587
+ #[ serde( rename = "value" ) ]
588
+ pub values : Option < Vec < Value > > ,
589
+ }
590
+
591
+ #[ derive( Debug , PartialEq , Deserialize ) ]
592
+ #[ serde( rename = "Value" ) ]
593
+ pub struct Value {
594
+ #[ serde( rename = "@id" ) ]
595
+ pub id : String ,
596
+
597
+ #[ serde( rename = "$text" ) ]
598
+ pub text : Option < String > ,
599
+ }
600
+ let xml = r#"
601
+ <?xml version="1.0" encoding="utf-8"?>
602
+ <root>
603
+ <key>
604
+ <value id="1">text1</value>
605
+ <value id="2">text2</value>
606
+ <value id="3">text3</value>
607
+ <value id="4">text4</value>d
608
+ <value id="5">text5</value>
609
+ <value id="6">text6</value>
610
+ </key>
611
+ </root>"# ;
612
+ let data = quick_xml:: de:: from_str :: < Root > ( xml) ;
613
+ #[ cfg( feature = "overlapped-lists" ) ]
614
+ assert_eq ! (
615
+ data. unwrap( ) ,
616
+ Root {
617
+ key: Key {
618
+ values: Some ( vec![
619
+ Value {
620
+ id: "1" . to_string( ) ,
621
+ text: Some ( "text1" . to_string( ) )
622
+ } ,
623
+ Value {
624
+ id: "2" . to_string( ) ,
625
+ text: Some ( "text2" . to_string( ) )
626
+ } ,
627
+ Value {
628
+ id: "3" . to_string( ) ,
629
+ text: Some ( "text3" . to_string( ) )
630
+ } ,
631
+ Value {
632
+ id: "4" . to_string( ) ,
633
+ text: Some ( "text4" . to_string( ) )
634
+ } ,
635
+ Value {
636
+ id: "5" . to_string( ) ,
637
+ text: Some ( "text5" . to_string( ) )
638
+ } ,
639
+ Value {
640
+ id: "6" . to_string( ) ,
641
+ text: Some ( "text6" . to_string( ) )
642
+ } ,
643
+ ] ) ,
644
+ } ,
645
+ }
646
+ ) ;
647
+ #[ cfg( not( feature = "overlapped-lists" ) ) ]
648
+ match data {
649
+ Err ( quick_xml:: DeError :: Custom ( e) ) => assert_eq ! ( e, "duplicate field `value`" ) ,
650
+ e => panic ! (
651
+ r#"Expected `Err(Custom("duplicate field `value`"))`, but got `{:?}`"# ,
652
+ e
653
+ ) ,
654
+ }
655
+ }
0 commit comments