XML文档中的错误(2,13)

时间:2013-11-28 12:07:00

标签: c# xml debugging deserialization

这是EWS调用返回的XML文档的ASCII数据,并使用(new ASCIIEncoding()).GetString(XmlData)格式化:

<?xml version="1.0"?>
<categories default="Alltag" lastSavedSession="3" lastSavedTime="2013-11-21T13:15:18.2751355Z" xmlns="CategoryList.xsd">
    <category name="Lila Kategorie" color="8" keyboardShortcut="0" usageCount="2" lastTimeUsedNotes="1601-01-01T00:00:00Z" lastTimeUsedJournal="1601-01-01T00:00:00Z" lastTimeUsedContacts="1601-01-01T00:00:00Z" lastTimeUsedTasks="1601-01-01T00:00:00Z" lastTimeUsedCalendar="1601-01-01T00:00:00Z" lastTimeUsedMail="1601-01-01T00:00:00Z" lastTimeUsed="2013-11-04T16:54:56.824Z" lastSessionUsed="0" guid="{56d27797-6a5f-4e0a-9e68-54e386b68e3a}" renameOnFirstUse="1" />
    <category name="Gelbe Kategorie" color="3" keyboardShortcut="0" usageCount="2" lastTimeUsedNotes="1601-01-01T00:00:00Z" lastTimeUsedJournal="1601-01-01T00:00:00Z" lastTimeUsedContacts="1601-01-01T00:00:00Z" lastTimeUsedTasks="1601-01-01T00:00:00Z" lastTimeUsedCalendar="1601-01-01T00:00:00Z" lastTimeUsedMail="1601-01-01T00:00:00Z" lastTimeUsed="2013-11-04T16:54:56.824Z" lastSessionUsed="0" guid="{19008ab2-00a6-4149-a531-fd58edb3fc8c}" renameOnFirstUse="1" />
    <category name="Blaue Kategorie" color="7" keyboardShortcut="0" usageCount="6" lastTimeUsedNotes="1601-01-01T00:00:00Z" lastTimeUsedJournal="1601-01-01T00:00:00Z" lastTimeUsedContacts="1601-01-01T00:00:00Z" lastTimeUsedTasks="1601-01-01T00:00:00Z" lastTimeUsedCalendar="2013-11-04T16:58:58.111Z" lastTimeUsedMail="1601-01-01T00:00:00Z" lastTimeUsed="2013-11-04T16:58:58.111Z" lastSessionUsed="1" guid="{94281f1d-827d-43f5-a4f6-3840e9378932}" renameOnFirstUse="0" />
    <category name="Grüne Kategorie" color="4" keyboardShortcut="0" usageCount="2" lastTimeUsedNotes="1601-01-01T00:00:00Z" lastTimeUsedJournal="1601-01-01T00:00:00Z" lastTimeUsedContacts="1601-01-01T00:00:00Z" lastTimeUsedTasks="1601-01-01T00:00:00Z" lastTimeUsedCalendar="1601-01-01T00:00:00Z" lastTimeUsedMail="1601-01-01T00:00:00Z" lastTimeUsed="2013-11-04T16:54:56.824Z" lastSessionUsed="0" guid="{00ce8d45-4555-47a2-b8b1-2f55d6ff6ccc}" renameOnFirstUse="1" />
    <category name="Orange Kategorie" color="1" keyboardShortcut="0" usageCount="6" lastTimeUsedNotes="1601-01-01T00:00:00Z" lastTimeUsedJournal="1601-01-01T00:00:00Z" lastTimeUsedContacts="1601-01-01T00:00:00Z" lastTimeUsedTasks="1601-01-01T00:00:00Z" lastTimeUsedCalendar="2013-11-04T16:59:01.511Z" lastTimeUsedMail="1601-01-01T00:00:00Z" lastTimeUsed="2013-11-04T16:59:01.511Z" lastSessionUsed="1" guid="{0b4c0f71-b0cc-4c4e-afd1-99ba9af28ff9}" renameOnFirstUse="0" />
    <category name="SChulung" color="2" keyboardShortcut="0" usageCount="6" lastTimeUsedNotes="1601-01-01T00:00:00Z" lastTimeUsedJournal="1601-01-01T00:00:00Z" lastTimeUsedContacts="1601-01-01T00:00:00Z" lastTimeUsedTasks="1601-01-01T00:00:00Z" lastTimeUsedCalendar="2013-11-12T16:11:01.011Z" lastTimeUsedMail="1601-01-01T00:00:00Z" lastTimeUsed="2013-11-12T16:11:01.011Z" lastSessionUsed="2" guid="{c5c0a53e-a556-4011-8530-0e8e7ddefc90}" renameOnFirstUse="0" />
    <category name="Alltag" color="0" keyboardShortcut="0" usageCount="5" lastTimeUsedNotes="1601-01-01T00:00:00Z" lastTimeUsedJournal="1601-01-01T00:00:00Z" lastTimeUsedContacts="1601-01-01T00:00:00Z" lastTimeUsedTasks="1601-01-01T00:00:00Z" lastTimeUsedCalendar="1601-01-01T00:00:00Z" lastTimeUsedMail="1601-01-01T00:00:00Z" lastTimeUsed="2013-11-19T13:45:32.627Z" lastSessionUsed="2" guid="{d1d2d16e-10f3-4304-9f94-141016b95ccf}" renameOnFirstUse="0" />
    <category name="Feiertag" color="5" keyboardShortcut="0" usageCount="6" lastTimeUsedNotes="1601-01-01T00:00:00Z" lastTimeUsedJournal="1601-01-01T00:00:00Z" lastTimeUsedContacts="1601-01-01T00:00:00Z" lastTimeUsedTasks="1601-01-01T00:00:00Z" lastTimeUsedCalendar="2013-11-19T13:52:12.467Z" lastTimeUsedMail="1601-01-01T00:00:00Z" lastTimeUsed="2013-11-19T13:52:12.467Z" lastSessionUsed="3" guid="{6e812025-ab62-4092-b599-55df683eef20}" renameOnFirstUse="0" />
</categories>    

我的第一个问题:什么???那意味着什么?这是由我使用ASCII而不是UTF或MS使用的任何编码引起的吗?

我的程序尝试解码上述文档,在以下第二行中抛出“XML文档错误(2,13)”:

UserConfiguration UsrConfig = UserConfiguration.Bind(ews, "CategoryList", WellKnownFolderName.Calendar, UserConfigurationProperties.All);
System.IO.MemoryStream stream = new System.IO.MemoryStream(UsrConfig.XmlData);

我的第二个问题:(2,13)是什么意思?

为了澄清,我要求程序返回BaseException,它是

System.FormatException: GUID muss 32 Ziffern mit 4 Bindestrichen enthalten (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).
bei System.Guid.GuidResult.SetFailure(ParseFailureKind failure, String failureMessageID, Object failureMessageFormatArgument, String failureArgumentName, Exception innerException)
bei System.Guid.TryParseGuidWithNoStyle(String guidString, GuidResult& result)
bei System.Guid.TryParseGuid(String g, GuidStyles flags, GuidResult& result)
bei System.Guid..ctor(String g)
bei System.Xml.XmlConvert.ToGuid(String s)
bei Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderMasterCategoryList.Read5_MasterCategoryList(Boolean isNullable, Boolean checkType)
bei Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderMasterCategoryList.Read6_categories()

问题:我没有看到任何不符合这些要求的Guid;即使我这样做了,XML的起源是微软 - 我不明白为什么我要在那里改变任何东西。

XML反序列化是根据我在网上找到的模型完成的,其中包含

[XmlAttribute("guid")]
public Guid Id
{
    get { return _IdField; }
    set {
        _IdField = value;
        RaisePropertyChanged("Id");
    }
}

我的第三个问题:除了将Guid数据类型更改为string之外还有哪些其他可能性,我是否必须解决我的问题? (顺便说一句,我只需要类别的名称和颜色......)

1 个答案:

答案 0 :(得分:1)