2012-05-12 1 views
2

xmlファイルからスキーマから生成されたxmlファイルを共有します。これらはxmlファイルからc#コードを生成し、そのプロパティを設定する必要があります。これを行うパーサーを作成することはできますが、OOBソリューションがあるかどうかを確認していました。C#オブジェクトコードを生成し、xmlドキュメントからそのプロパティに値を割り当てます。

Customer cust=new Customer(); 
fname="tom"; 
lname="jerry"; 

答えて

3

例えば

<Customer> 
<fname>tom</fname> 
<lname>jerry</lname> 
</Customer> 

私はあなたの希望コード出力を作成するために、XSLTを使用することをお勧めします。

この汎用スタイルシートは、あなたのクラスとして、ルートノード名を使用して、それの内容で、すべての子ノードを割り当てます。

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="text" indent="no" /> 

    <xsl:variable name="newline" select="'&#xa;'" /> 

    <xsl:template match="/"> 
     <xsl:apply-templates /> 
    </xsl:template> 

    <xsl:template match="/node()[1]"> 
     <xsl:variable name="classname" select="local-name()" /> 

     <xsl:value-of select="concat($classname, ' cust=new ', $classname, '();', $newline)"/> 

     <xsl:for-each select="./*"> 
      <xsl:value-of select="concat(local-name(), '=&quot;', text(), '&quot;;', $newline)"/> 
     </xsl:for-each> 
    </xsl:template> 

</xsl:stylesheet> 

<?xml version="1.0" encoding="utf-8" ?> 
<Customer> 
    <fname>tom</fname> 
    <lname>jerry</lname> 
</Customer> 

に適用する場合は、次の出力

が生成されます
Customer cust=new Customer(); 
fname="tom"; 
lname="jerry"; 
+0

私は私の質問ではっきりしていないかもしれませんが、私は脱灰方法を知っていますが、私が欲しいのはどのようにth e XML文書のコードに従います。 カスタマーcc = new Customer() cc.fname = "tom" – madhugilla

+1

本当に悪いです。 Xsltを使用して私の更新されたソリューションを参照してください。 – Filburt