@@ -10,7 +10,7 @@ use yaserde::*;
|
||||
namespace = "html: http://www.w3.org/TR/REC-html40"
|
||||
)]
|
||||
struct Workbook {
|
||||
#[yaserde(rename = "Worksheet")]
|
||||
#[yaserde(rename = "Worksheet", prefix = "ss")]
|
||||
worksheet: Worksheet,
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ struct Workbook {
|
||||
namespace = "html: http://www.w3.org/TR/REC-html40"
|
||||
)]
|
||||
struct Worksheet {
|
||||
#[yaserde(rename = "Table")]
|
||||
#[yaserde(rename = "Table", prefix = "ss")]
|
||||
table: Table,
|
||||
#[yaserde(attribute, rename = "Name", prefix = "ss")]
|
||||
ws_name: String,
|
||||
@@ -53,7 +53,7 @@ struct Table {
|
||||
#[yaserde(attribute, rename = "DefaultRowHeight", prefix = "ss")]
|
||||
default_column_height: f32,
|
||||
|
||||
#[yaserde(rename = "Row")]
|
||||
#[yaserde(rename = "Row", prefix = "ss")]
|
||||
rows: Vec<Row>,
|
||||
}
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@ where
|
||||
}
|
||||
|
||||
#[derive(YaSerialize, YaDeserialize, Debug, Default, Clone, Eq, PartialEq)]
|
||||
#[yaserde(namespace = "u: urn:schemas-upnp-org:service:AVTransport:1")]
|
||||
pub struct SoapPlay {
|
||||
#[yaserde(rename = "Play", prefix = "u", default)]
|
||||
pub body: Play,
|
||||
@@ -93,6 +94,7 @@ fn test_for_generic_nested_struct() {
|
||||
};
|
||||
|
||||
let s = ser::to_string(&a).unwrap();
|
||||
println!("{s}");
|
||||
let b: SoapEnvelope<SoapPlay> = de::from_str(&s).unwrap();
|
||||
|
||||
assert_eq!(a, b);
|
||||
|
||||
@@ -2,4 +2,5 @@ mod bbigras_namespace;
|
||||
mod boscop;
|
||||
mod generic;
|
||||
mod ln_dom;
|
||||
mod same_element_different_namespaces;
|
||||
mod svd;
|
||||
|
||||
37
examples/src/same_element_different_namespaces.rs
Normal file
37
examples/src/same_element_different_namespaces.rs
Normal file
@@ -0,0 +1,37 @@
|
||||
// related to issue https://github.com/media-io/yaserde/issues/186
|
||||
use yaserde::*;
|
||||
|
||||
#[derive(YaDeserialize, Debug, PartialEq)]
|
||||
#[yaserde(
|
||||
namespace = "myns: http://my_namespace_1/",
|
||||
namespace = "ext: http://my_namespace_2/",
|
||||
prefix = "myns"
|
||||
)]
|
||||
pub struct ErrorType {
|
||||
#[yaserde(rename = "reasonCode", prefix = "myns")]
|
||||
pub reason_code: Option<u16>,
|
||||
#[yaserde(rename = "reasonCode", prefix = "ext")]
|
||||
pub ext_reason_code: Option<u16>,
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn same_element_different_namespaces() {
|
||||
use yaserde::de::from_str;
|
||||
|
||||
let content = r#"
|
||||
<error_type xmlns="http://my_namespace_1/" xmlns:ext="http://my_namespace_2/">
|
||||
<reasonCode>12</reasonCode>
|
||||
<ext:reasonCode>32</ext:reasonCode>
|
||||
</error_type>
|
||||
"#;
|
||||
|
||||
let loaded: ErrorType = from_str(content).unwrap();
|
||||
println!("{:?}", loaded);
|
||||
|
||||
let reference = ErrorType {
|
||||
reason_code: Some(12),
|
||||
ext_reason_code: Some(32),
|
||||
};
|
||||
|
||||
assert_eq!(loaded, reference);
|
||||
}
|
||||
Reference in New Issue
Block a user