生成 C# 对象代码并从 xml 文档为其属性赋值

本文关键字:文档 属性 赋值 xml 对象 代码 生成 | 更新日期: 2023-09-27 18:34:01

我们有一个从架构生成的 xml 文件,这些文件与我们共享,我们需要从 xml 文件生成 c# 代码并设置其属性。我可以创建一个解析器来执行此操作,但正在检查是否有任何 OOB 解决方案。

例如

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

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

生成 C# 对象代码并从 xml 文档为其属性赋值

我建议使用 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";