<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>进化的测试 &#187; xsd</title>
	<atom:link href="http://magustest.com/blog/tag/xsd/feed/" rel="self" type="application/rss+xml" />
	<link>http://magustest.com/blog</link>
	<description>软件测试，自动化测试，白盒测试，Python</description>
	<lastBuildDate>Thu, 17 May 2012 14:19:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>用XSD自动生成XML对应的.NET实体类</title>
		<link>http://magustest.com/blog/net/automatic-generate-xml-instance-by-using-xsd/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=automatic-generate-xml-instance-by-using-xsd</link>
		<comments>http://magustest.com/blog/net/automatic-generate-xml-instance-by-using-xsd/#comments</comments>
		<pubDate>Wed, 10 Sep 2008 07:34:41 +0000</pubDate>
		<dc:creator>magus</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[XmlSerializer]]></category>
		<category><![CDATA[xsd]]></category>

		<guid isPermaLink="false">http://magustest.com/blog/?p=138</guid>
		<description><![CDATA[在做测试的过程中，测试数据会保存到一个XML文件里面，很多时候还是先有测试数据(XML)，后面才会去做测试。在C#里面，读取XML的方法有很多，最近用了一下XmlSerializer，感觉非常爽！ 自己先编一个XML文件，也就是测试数据： &#160; Magus open5555 &#160; 29 30 &#160; 77 21 然后利用XSD.EXE工具自动生成一个相应的实例类，不用自己编了~，输入命令 xsd XMLFile1.xml 这样会默认生成一个XMLFile1.xsd文件，然后再根据这个xsd文件来生成相应的C#实例类 xsd XMLFile1.xsd /c 默认会生成一个XMLFile1.cs的实例类 using System.Xml.Serialization; &#160; &#91;System.SerializableAttribute&#40;&#41;&#93; &#91;System.Xml.Serialization.XmlRoot&#40;&#41;&#93; public partial class Config &#123; &#160; private string userNameField; &#160; private string passwordField; &#160; private ConfigData&#91;&#93; dataField; &#160; /// &#91;System.Xml.Serialization.XmlElementAttribute&#40;Form=System.Xml.Schema.XmlSchemaForm.Unqualified&#41;&#93; public string UserName &#123; get &#123; return this.userNameField; &#125; set &#123; <a href='http://magustest.com/blog/net/automatic-generate-xml-instance-by-using-xsd/' class='excerpt-more'>[...]</a>
Related posts:<ol>
<li><a href='http://magustest.com/blog/whiteboxtesting/beginning-nmock/' rel='bookmark' title='NMock2入门经验'>NMock2入门经验</a></li>
<li><a href='http://magustest.com/blog/net/aspnet-web-config-priority/' rel='bookmark' title='ASP.NET中配置文件web.config的优先级'>ASP.NET中配置文件web.config的优先级</a></li>
<li><a href='http://magustest.com/blog/automationtesting/create-web-test-plugin-in-vsts/' rel='bookmark' title='在VSTS中创建Web Test的插件'>在VSTS中创建Web Test的插件</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>在做测试的过程中，测试数据会保存到一个XML文件里面，很多时候还是先有测试数据(XML)，后面才会去做测试。在C#里面，读取XML的方法有很多，最近用了一下XmlSerializer，感觉非常爽！</p>
<p>自己先编一个XML文件，也就是测试数据：</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">&nbsp;
    Magus
    open5555
&nbsp;
      29
      30
&nbsp;
      77
      21</pre></div></div>

<p><span id="more-138"></span><br />
然后利用XSD.EXE工具自动生成一个相应的实例类，不用自己编了~，输入命令</p>
<p>xsd XMLFile1.xml</p>
<p>这样会默认生成一个XMLFile1.xsd文件，然后再根据这个xsd文件来生成相应的C#实例类</p>
<p>xsd XMLFile1.xsd /c</p>
<p>默认会生成一个XMLFile1.cs的实例类</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.Xml.Serialization</span><span style="color: #008000;">;</span>
&nbsp;
<span style="color: #008000;">&#91;</span><span style="color: #000000;">System</span><span style="color: #008000;">.</span><span style="color: #0000FF;">SerializableAttribute</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#93;</span>
<span style="color: #008000;">&#91;</span><span style="color: #000000;">System.<span style="color: #0000FF;">Xml</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Serialization</span></span><span style="color: #008000;">.</span><span style="color: #0000FF;">XmlRoot</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#93;</span>
<span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #0600FF; font-weight: bold;">partial</span> <span style="color: #6666cc; font-weight: bold;">class</span> Config <span style="color: #008000;">&#123;</span>
&nbsp;
    <span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #6666cc; font-weight: bold;">string</span> userNameField<span style="color: #008000;">;</span>
&nbsp;
    <span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #6666cc; font-weight: bold;">string</span> passwordField<span style="color: #008000;">;</span>
&nbsp;
    <span style="color: #0600FF; font-weight: bold;">private</span> ConfigData<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span> dataField<span style="color: #008000;">;</span>
&nbsp;
    <span style="color: #008080; font-style: italic;">///</span>
    <span style="color: #008000;">&#91;</span><span style="color: #000000;">System.<span style="color: #0000FF;">Xml</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Serialization</span></span><span style="color: #008000;">.</span><span style="color: #0000FF;">XmlElementAttribute</span><span style="color: #008000;">&#40;</span>Form<span style="color: #008000;">=</span><span style="color: #000000;">System.<span style="color: #0000FF;">Xml</span></span><span style="color: #008000;">.</span><span style="color: #0000FF;">Schema</span><span style="color: #008000;">.</span><span style="color: #0000FF;">XmlSchemaForm</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Unqualified</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#93;</span>
    <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">string</span> UserName <span style="color: #008000;">&#123;</span>
        get <span style="color: #008000;">&#123;</span>
            <span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">userNameField</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
        set <span style="color: #008000;">&#123;</span>
            <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">userNameField</span> <span style="color: #008000;">=</span> value<span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
&nbsp;
    <span style="color: #008080; font-style: italic;">///</span>
    <span style="color: #008000;">&#91;</span><span style="color: #000000;">System.<span style="color: #0000FF;">Xml</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Serialization</span></span><span style="color: #008000;">.</span><span style="color: #0000FF;">XmlElementAttribute</span><span style="color: #008000;">&#40;</span>Form<span style="color: #008000;">=</span><span style="color: #000000;">System.<span style="color: #0000FF;">Xml</span></span><span style="color: #008000;">.</span><span style="color: #0000FF;">Schema</span><span style="color: #008000;">.</span><span style="color: #0000FF;">XmlSchemaForm</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Unqualified</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#93;</span>
    <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">string</span> Password <span style="color: #008000;">&#123;</span>
        get <span style="color: #008000;">&#123;</span>
            <span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">passwordField</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
        set <span style="color: #008000;">&#123;</span>
            <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">passwordField</span> <span style="color: #008000;">=</span> value<span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
&nbsp;
    <span style="color: #008080; font-style: italic;">///</span>
    <span style="color: #008000;">&#91;</span><span style="color: #000000;">System.<span style="color: #0000FF;">Xml</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Serialization</span></span><span style="color: #008000;">.</span><span style="color: #0000FF;">XmlElementAttribute</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Data&quot;</span>, Form<span style="color: #008000;">=</span><span style="color: #000000;">System.<span style="color: #0000FF;">Xml</span></span><span style="color: #008000;">.</span><span style="color: #0000FF;">Schema</span><span style="color: #008000;">.</span><span style="color: #0000FF;">XmlSchemaForm</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Unqualified</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#93;</span>
    <span style="color: #0600FF; font-weight: bold;">public</span> ConfigData<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span> Data <span style="color: #008000;">&#123;</span>
        get <span style="color: #008000;">&#123;</span>
            <span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">dataField</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
        set <span style="color: #008000;">&#123;</span>
            <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">dataField</span> <span style="color: #008000;">=</span> value<span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">///</span>
<span style="color: #008000;">&#91;</span><span style="color: #000000;">System</span><span style="color: #008000;">.</span><span style="color: #0000FF;">SerializableAttribute</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#93;</span>
<span style="color: #008000;">&#91;</span><span style="color: #000000;">System.<span style="color: #0000FF;">Xml</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Serialization</span></span><span style="color: #008000;">.</span><span style="color: #0000FF;">XmlTypeAttribute</span><span style="color: #008000;">&#40;</span>AnonymousType<span style="color: #008000;">=</span><span style="color: #0600FF; font-weight: bold;">true</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#93;</span>
<span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #0600FF; font-weight: bold;">partial</span> <span style="color: #6666cc; font-weight: bold;">class</span> ConfigData <span style="color: #008000;">&#123;</span>
&nbsp;
    <span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #6666cc; font-weight: bold;">string</span> manField<span style="color: #008000;">;</span>
&nbsp;
    <span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #6666cc; font-weight: bold;">string</span> ladyField<span style="color: #008000;">;</span>
&nbsp;
    <span style="color: #008080; font-style: italic;">///</span>
    <span style="color: #008000;">&#91;</span><span style="color: #000000;">System.<span style="color: #0000FF;">Xml</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Serialization</span></span><span style="color: #008000;">.</span><span style="color: #0000FF;">XmlElementAttribute</span><span style="color: #008000;">&#40;</span>Form<span style="color: #008000;">=</span><span style="color: #000000;">System.<span style="color: #0000FF;">Xml</span></span><span style="color: #008000;">.</span><span style="color: #0000FF;">Schema</span><span style="color: #008000;">.</span><span style="color: #0000FF;">XmlSchemaForm</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Unqualified</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#93;</span>
    <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">string</span> Man <span style="color: #008000;">&#123;</span>
        get <span style="color: #008000;">&#123;</span>
            <span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">manField</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
        set <span style="color: #008000;">&#123;</span>
            <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">manField</span> <span style="color: #008000;">=</span> value<span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
&nbsp;
    <span style="color: #008080; font-style: italic;">///</span>
    <span style="color: #008000;">&#91;</span><span style="color: #000000;">System.<span style="color: #0000FF;">Xml</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Serialization</span></span><span style="color: #008000;">.</span><span style="color: #0000FF;">XmlElementAttribute</span><span style="color: #008000;">&#40;</span>Form<span style="color: #008000;">=</span><span style="color: #000000;">System.<span style="color: #0000FF;">Xml</span></span><span style="color: #008000;">.</span><span style="color: #0000FF;">Schema</span><span style="color: #008000;">.</span><span style="color: #0000FF;">XmlSchemaForm</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Unqualified</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#93;</span>
    <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">string</span> Lady <span style="color: #008000;">&#123;</span>
        get <span style="color: #008000;">&#123;</span>
            <span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">ladyField</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
        set <span style="color: #008000;">&#123;</span>
            <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">ladyField</span> <span style="color: #008000;">=</span> value<span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">///</span>
<span style="color: #008000;">&#91;</span><span style="color: #000000;">System</span><span style="color: #008000;">.</span><span style="color: #0000FF;">SerializableAttribute</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#93;</span>
<span style="color: #008000;">&#91;</span><span style="color: #000000;">System.<span style="color: #0000FF;">Xml</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Serialization</span></span><span style="color: #008000;">.</span><span style="color: #0000FF;">XmlTypeAttribute</span><span style="color: #008000;">&#40;</span>AnonymousType<span style="color: #008000;">=</span><span style="color: #0600FF; font-weight: bold;">true</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#93;</span>
<span style="color: #008000;">&#91;</span><span style="color: #000000;">System.<span style="color: #0000FF;">Xml</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Serialization</span></span><span style="color: #008000;">.</span><span style="color: #0000FF;">XmlRootAttribute</span><span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">Namespace</span><span style="color: #008000;">=</span><span style="color: #666666;">&quot;&quot;</span>, IsNullable<span style="color: #008000;">=</span><span style="color: #0600FF; font-weight: bold;">false</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#93;</span>
<span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #0600FF; font-weight: bold;">partial</span> <span style="color: #6666cc; font-weight: bold;">class</span> NewDataSet <span style="color: #008000;">&#123;</span>
&nbsp;
    <span style="color: #0600FF; font-weight: bold;">private</span> Config<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span> itemsField<span style="color: #008000;">;</span>
&nbsp;
    <span style="color: #008080; font-style: italic;">///</span>
    <span style="color: #008000;">&#91;</span><span style="color: #000000;">System.<span style="color: #0000FF;">Xml</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Serialization</span></span><span style="color: #008000;">.</span><span style="color: #0000FF;">XmlElementAttribute</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Config&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#93;</span>
    <span style="color: #0600FF; font-weight: bold;">public</span> Config<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span> Items <span style="color: #008000;">&#123;</span>
        get <span style="color: #008000;">&#123;</span>
            <span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">itemsField</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
        set <span style="color: #008000;">&#123;</span>
            <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">itemsField</span> <span style="color: #008000;">=</span> value<span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span></pre></div></div>

<p>然后把XMLFile1.cs和XMLFile1.xml拷到项目底下就可以用了~非常方便~</p>
<p>用的时候：</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">XmlSerializer xs <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> XmlSerializer<span style="color: #008000;">&#40;</span><span style="color: #008000;">typeof</span><span style="color: #008000;">&#40;</span>Config<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
FileStream fs <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> FileStream<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;XMLFile1.xml&quot;</span>, FileMode<span style="color: #008000;">.</span><span style="color: #0000FF;">Open</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
Config config <span style="color: #008000;">=</span> <span style="color: #008000;">&#40;</span>Config<span style="color: #008000;">&#41;</span>xs<span style="color: #008000;">.</span><span style="color: #0000FF;">Deserialize</span><span style="color: #008000;">&#40;</span>fs<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #6666cc; font-weight: bold;">String</span> name <span style="color: #008000;">=</span> config<span style="color: #008000;">.</span><span style="color: #0000FF;">UserName</span></pre></div></div>

<p>Related posts:<ol>
<li><a href='http://magustest.com/blog/whiteboxtesting/beginning-nmock/' rel='bookmark' title='NMock2入门经验'>NMock2入门经验</a></li>
<li><a href='http://magustest.com/blog/net/aspnet-web-config-priority/' rel='bookmark' title='ASP.NET中配置文件web.config的优先级'>ASP.NET中配置文件web.config的优先级</a></li>
<li><a href='http://magustest.com/blog/automationtesting/create-web-test-plugin-in-vsts/' rel='bookmark' title='在VSTS中创建Web Test的插件'>在VSTS中创建Web Test的插件</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://magustest.com/blog/net/automatic-generate-xml-instance-by-using-xsd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

