0
我有一個xml,我根據xml中的文本更新了treeview。 示例XML: 反序列化xml文檔正在改變xml中節點的值
<TaskSeverity></TaskSeverity>
<TaskCategory></TaskCategory>
<TaskTitle></TaskTitle>
<TaskMessage></TaskMessage>
<TaskCode></TaskCode>
<TaskName>SQL_MAPPING_COMPANIES</TaskName>
<Schema>CLIENT</Schema>
<!-- Schema is a required field -->
<Mapping>Companies</Mapping>
<!-- Mapping is a required field -->
<CacheDb>false</CacheDb>
<!-- CacheDb is an optional field. Default value is false -->
<DeleteTableBeforeExecute>true</DeleteTableBeforeExecute>
<!-- DeleteTableBeforeExecute is an optional field. Default value is false -->
現在我有這確實是一個方法。
public void UpdateTreeView(XmlDocument xDoc)
{
xmlTreeViewAdv.Nodes.Clear();
_nodeToTaskDictionary.Clear();
if (xDoc == null)
return;
TreeNodeAdv rootNode = new TreeNodeAdv(xDoc.DocumentElement.Name);
if (rootNode.Text.Equals("DmtTask") && xDoc.DocumentElement != null)
{
foreach (XmlAttribute attribute in xDoc.DocumentElement.Attributes)
{
if (attribute.Name.Equals("xsi:type"))
{
rootNode.Text = attribute.Value;
}
}
}
xmlTreeViewAdv.Nodes.Add(rootNode);
rootNode.Font = new Font(rootNode.Font, FontStyle.Bold);
_nodeToTaskDictionary.Add(rootNode, DmtTaskToolbox.FromXml(xDoc));
//This particular line does the deserialization part.
}
//其中_nodeToTaskDictionary是
public Dictionary<TreeNodeAdv, DmtTask> _nodeToTaskDictionary = new Dictionary<TreeNodeAdv, DmtTask>();
//where TreeNodeAdv is the Treeview (Syncfusion) and DmtTask is an abstract class
public static class DmtTaskToolbox
{
public static DmtTask FromXml(XmlDocument xDoc)
{
DmtTask t = DmtTask.DmtXmlSerializer.Deserialize(new XmlNodeReader(xDoc)) as DmtTask;
// As soon as the above line is executed the value of the last node DeleteTableBeforeExecute innerText is changing to False. I could not understand the reason for it
if (t == null)
throw new Exception("Unable to convert the specific XML document DmtTask");
return t;
}
}
公共靜態XmlSerializer的DmtXmlSerializer =新的XmlSerializer(typeof運算(DmtTask),DmtTaskTypes);
根據該節點的值,我將刪除表中的所有記錄並插入新記錄。但它返回假。
這是什麼,是看反序列化
<TaskSeverity></TaskSeverity>
<TaskCategory></TaskCategory>
<TaskTitle></TaskTitle>
<TaskMessage></TaskMessage>
<TaskCode></TaskCode>
<TaskName>SQL_MAPPING_COMPANIES</TaskName>
<Schema>CLIENT</Schema>
<!-- Schema is a required field -->
<Mapping>Companies</Mapping>
<!-- Mapping is a required field -->
<CacheDb>false</CacheDb>
<!-- CacheDb is an optional field. Default value is false -->
<DeleteTableBeforeExecute>false</DeleteTableBeforeExecute>
<!-- DeleteTableBeforeExecute is an optional field. Default value is false -->
任何幫助,將不勝感激
找到了問題。問題是在抽象類DeleteTableBeforeExectue中定義的公共變量與在我試圖反序列化的xmldocument中定義的標記DeleteTableBeforeExecute的拼寫不同。將類序列化爲XML時,每個公共屬性和字段值都將轉換爲XML元素。元素的名稱與屬性的名稱相匹配。 XmlElement屬性允許修改XML標籤的名稱和格式。 – 2013-04-29 09:56:06