XmlDocument.InnerXml为null,但InnerText不是

时间:2010-05-07 16:53:41

标签: .net xml xmldocument

我正在使用XmlDocumentXmlElement来构建一个简单(但很大)的XML文档,它看起来像:

<Widgets>
    <Widget>
        <Stuff>foo</Stuff>
        <MoreStuff>bar</MoreStuff>...lots more child nodes
    </Widget>
    <Widget>...lots more Widget nodes
</Widgets>

我的问题是,当我完成构建XML时,XmlDocument.InnerXml为空,但InnerText仍显示所有子节点的所有文本。

有没有人见过这样的问题?什么样的输入数据会导致这些症状?我希望XmlDocument只是在给出错误数据的情况下抛出异常。

注意:我很确定这与输入数据有关,因为我只能针对某些数据集重现它。我也尝试使用SecurityElement.Escape转义数据,但没有区别。

修改 这是我用来构建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

1 个答案:

答案 0 :(得分:0)

在添加所有元素之后和尝试读取InnerXml或OuterXML之前,您是否尝试过规范化XMLDocument?