@@ -47,4 +47,53 @@ public void ExtractsInfoFromStream(string xml, string? encoding, bool? standalon
4747 // Ensure the part reader did not dispose the stream when it is disposed
4848 Assert . True ( stream . CanRead ) ;
4949 }
50+
51+ [ Fact ]
52+ public void CreateElement ( )
53+ {
54+ // Arrange
55+ var stream = new MemoryStream ( ) ;
56+ ExtendedPart extPart ;
57+ const string xmlContent = """
58+ <?xml version='1.0' encoding='utf-8' standalone='yes'?>
59+ <a:root xmlns:a="http://www.tests.com/">
60+ <a:child>Test</a:child>
61+ <a:child>Test2</a:child>
62+ </a:root>
63+ """ ;
64+ const string nsUri = "http://www.tests.com/" ;
65+ const string prefix = "a" ;
66+ const string localName = "root" ;
67+ {
68+ using ( var package = SpreadsheetDocument . Create ( stream , SpreadsheetDocumentType . Workbook ) )
69+ {
70+ var workbook = package . AddWorkbookPart ( ) ;
71+ extPart = workbook . AddExtendedPart ( nsUri , "application/xml" , ".xml" ) ;
72+
73+ // Write some custom elements which are unknown to the OpenXmlPartReader
74+ using ( var writer = new StreamWriter ( extPart . GetStream ( FileMode . Create ) ) )
75+ {
76+ writer . Write ( xmlContent ) ;
77+ }
78+
79+ OpenXmlReader reader = OpenXmlReader . Create ( extPart ) ;
80+
81+ // Assert
82+ while ( reader . Read ( ) )
83+ {
84+ Assert . Equal ( prefix , reader . Prefix ) ;
85+ Assert . Equal ( nsUri , reader . NamespaceUri ) ;
86+
87+ if ( ! reader . LocalName . Equals ( localName ) )
88+ {
89+ Assert . Equal ( "child" , reader . LocalName ) ;
90+ }
91+ else
92+ {
93+ Assert . Equal ( localName , reader . LocalName ) ;
94+ }
95+ }
96+ }
97+ }
98+ }
5099}
0 commit comments