Учитывая этот фрагмент XML:
...
<InSide:setHierarchyUpdates>
<automaticUpdateInterval>5</automaticUpdateInterval>
<shouldRunAutomaticUpdates>true<shouldRunAutomaticUpdates>
</InSide:setHierarchyUpdates>
...
Я пытаюсь сериализовать этот объект:
Imports System.Xml.Serialization
<XmlRoot(ElementName:="setHierarchyUpdates", namespace:="InSide")> _
Public Class HierarchyUpdate
<XmlElement(ElementName:="shouldRunAutomaticUpdates")> _
Public shouldRunAutomaticUpdates As Boolean
<XmlElement(ElementName:="automaticUpdateInterval")> _
Public automaticUpdateInterval As Integer
End Class
Как это:
Dim hierarchyUpdater As New HierarchyUpdate
Dim x As New XmlSerializer(hierarchyUpdater.GetType)
Dim objReader As Xml.XmlNodeReader = New Xml.XmlNodeReader(myXMLNode)
hierarchyUpdater = x.Deserialize(objReader)
Однако, объект после десериализации имеет значения false и ноль. Если я переключаю objReader на потоковый ридер и считываю его как файл, без родительских и пространств имен, он работает:
<setHierarchyUpdates>
<automaticUpdateInterval>5</automaticUpdateInterval>
<shouldRunAutomaticUpdates>true<shouldRunAutomaticUpdates>
</setHierarchyUpdates>
Что я делаю не так? Должен ли я использовать что-то кроме XMLRoot в определении класса, потому что, как узел XML, на самом деле это не корень? Если да, то? Почему ошибки не возвращаются при сбое?