Я использую XmlDocument
и XmlElement
для создания простого (но большого) XML-документа, который выглядит примерно так:
<Widgets>
<Widget>
<Stuff>foo</Stuff>
<MoreStuff>bar</MoreStuff>...lots more child nodes
</Widget>
<Widget>...lots more Widget nodes
</Widgets>
Моя проблема заключается в том, что когда я закончу сборку XMLXmlDocument.InnerXml
равно нулю, но InnerText
по-прежнему показывает весь текст всех дочерних узлов.
Кто-нибудь когда-либо сталкивался с подобной проблемой?Какие входные данные могут вызвать эти симптомы?Я ожидал, что XmlDocument
просто сгенерирует исключение, если ему были переданы неверные данные.
Примечание : я почти уверен, что это связано с входными данными, поскольку я могу только воспроизвести ихпротив определенных наборов данных.Я также попытался экранировать данные с помощью SecurityElement.Escape , но это не имело никакого значения.
EDIT Вот код, который я использую для построения XML:
Private Function BuildXml(widgets as ICollection(Of MyNamespace.Widget)) As String
Dim xDoc As New XmlDocument
Dim parentNode As XmlElement = xDoc.CreateElement("Widgets")
xDoc.AppendChild(parentNode)
For Each w as Widget in widgets
Dim widgetNode As XmlElement = xDoc.CreateElement("Widget")
widgetNode.AppendChild(CreateElement(xDoc, w.Stuff, "Stuff"))
// lots more...
parentNode.AppendChild(widgetNode)
Next
Return xDoc.OuterXml
End Function
Private Function CreateElement(ByVal xDoc As XmlDocument, ByVal value As String, ByVal elementName As String) As XmlElement
Dim element As XmlElement = xDoc.CreateElement(elementName)
element.InnerText = System.Security.SecurityElement.Escape(value)
Return element
End Function