过去,我手动创建自己的xml序列化类。但现在我想要自动完成这个过程。
于是我发现了微软的XSD工具。不幸的是,我遇到了这个实用程序的一个错误(CS030等)。
但接下来我发现了一个看起来很棒的开源工具XSD2CODE http://xsd2code.codeplex.com/
一切看起来都很好,直到我发现我的xml数据没有全部反序列化(哈哈)。
我的XML:
当我使用标准方法进行反序列化时,出现错误。
当我使用内置的Xsd2Code反序列化方法时:
然后我没有错误,但是并没有从XML中反序列化所有数据。 例如: 我的Xsd2Code设置: 有人能给我建议吗:
- 我做错了什么以及如何纠正这个问题? - 或者 - 为我的XML(上面的XML)提供另一个自动化的工作解决方案。
非常感谢您提前提供的所有建议。
我的XML:
<?xml version="1.0" encoding="utf-8" ?>
<MySettings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<AdminPassword>Admn1234</AdminPassword>
<ImagesFolder></ImagesFolder>
<Resolutions>
<Resolution id="1024x768">
<Width>1024</Width>
<Height>768</Height>
<Panel id="top">
<Height>603</Height>
<LocationOnMainForm>
<X>0</X>
<Y>0</Y>
</LocationOnMainForm>
<Background>1_panel_top_background.jpg</Background>
<Buttons>
<Button id="pbMainTopComp">
<Background>panel_top_btn_info.jpg</Background>
<Location>
<X>27</X>
<Y>123</Y>
</Location>
<OnClickOpenLink>http://www.google.com</OnClickOpenLink>
</Button>
<Button id="pbMainTopSelf">
<Background>panel_top_btn_self.jpg</Background>
<Location>
<X>360</X>
<Y>123</Y>
</Location>
<OnClickOpenLink>http://www.yahoo.com</OnClickOpenLink>
</Button>
</Buttons>
</Panel>
<Panel id="bottom">
<LocationOnMainForm>
<X>0</X>
<Y>603</Y>
</LocationOnMainForm>
<Height>165</Height>
<Background>panel_bottom_background.jpg</Background>
<Buttons>
<Button id="pbMainBottomPages">
<Background>panel_bottom_btn_pages.jpg</Background>
<Location>
<X>38</X>
<Y>39</Y>
</Location>
<OnClickOpenLink/>
</Button>
<Button id="pbMainBottomReport">
<Background>panel_bottom_btn_report.jpg</Background>
<Location>
<X>344</X>
<Y>39</Y>
</Location>
<OnClickOpenLink>http://www.bing.com</OnClickOpenLink>
</Button>
</Buttons>
</Panel>
</Resolution>
</Resolutions>
</MySettings>
当我使用标准方法进行反序列化时,出现错误。
MySettings mySettings = new MySettings();
using (TextReader textReader = new StreamReader(@"settings_test.xml"))
{
XmlSerializer xSerializer = new XmlSerializer(typeof(MySettings));
mySettings = (MySettings)xSerializer.Deserialize(textReader);
}
当我使用内置的Xsd2Code反序列化方法时:
MySettings mySettings = new MySettings();
bool isOk = MySettings.LoadFromFile(@"settings_test.xml", out mySettings);
string pass = mySettings.AdminPassword;
foreach (MySettingsResolutionsResolution item in mySettings.Resolutions)
{
string height = item.Height;
foreach (MySettingsResolutionsResolutionPanel panel in item.Panel)
{
string bckg = panel.Background;
foreach (MySettingsResolutionsResolutionPanelButtonsButton btn in panel.Buttons)
{
string btnBckg = btn.Background;
}
}
}
然后我没有错误,但是并没有从XML中反序列化所有数据。 例如: 我的Xsd2Code设置: 有人能给我建议吗:
- 我做错了什么以及如何纠正这个问题? - 或者 - 为我的XML(上面的XML)提供另一个自动化的工作解决方案。
非常感谢您提前提供的所有建议。