首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xsd2code问题反序列化xml文件

xsd2code问题反序列化xml文件
EN

Stack Overflow用户
提问于 2011-04-19 06:10:28
回答 2查看 4.6K关注 0票数 3

过去,我手动创建了自己的xml序列化类。但现在我想自动完成它。所以我找到了微软的XSD工具。不幸的是,我遇到了这个实用程序(CS030等)的错误。但是接下来我发现看起来很好的开源工具XSD2CODE http://xsd2code.codeplex.com/

在我发现并非所有xml数据都已反序列化(lol)之前,一切看起来都很棒。

我的XML:

代码语言:javascript
复制
<?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>

当我使用标准方法反序列化时,我有错误。

代码语言:javascript
复制
 MySettings mySettings = new MySettings();

using (TextReader textReader = new StreamReader(@"settings_test.xml"))
        {
            XmlSerializer xSerializer = new XmlSerializer(typeof(MySettings));
            mySettings = (MySettings)xSerializer.Deserialize(textReader);
        }

当我使用反序列化方法中内置的Xsd2Code时:

代码语言:javascript
复制
    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设置:

有人能给我建议吗:

  • 我做错了什么,以及如何纠正的另一个自动化工作解决方案。

提前感谢您的所有建议。

EN

回答 2

Stack Overflow用户

发布于 2013-03-14 08:38:26

在我的示例中,它向XmlElementAttribute (即Order = 4)添加了order参数。

如果移除order参数,它就能正常工作。我找不到的是一种防止XSD2CODE在生成类时包含order参数的方法。

票数 0
EN

Stack Overflow用户

发布于 2013-08-08 07:52:14

有几个问题可能导致这种情况:

  1. 在块内xml中元素的顺序无效,那么如果您不关心顺序,只需在xsd中用元素替换它(它将从生成的代码中从KenE应答中删除XmlElementAttribute )。
  2. 或更简单的情况是xml中的一个错误,例如添加到现有元素中(xsd2code在脱盐过程中不会失败,但会忽略元素)

希望它能帮上忙

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5712285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档