gpt4 book ai didi

c# - 从 C# 类代码生成 xsd 注释和文档标记

转载 作者:数据小太阳 更新时间:2023-10-29 01:59:19 25 4
gpt4 key购买 nike

使用 xds.exe(或 other methods)从类生成 XSD 文件效果很好,但我找不到将文档(或任何类型的描述)插入输出 XSD 的方法。

例如C#类

public class Animal
{
public int NumberOfLegs;
}

生成 XSD

<?xml version="1.0" encoding="utf-16"?>
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Animal" nillable="true" type="Animal" />
<xs:complexType name="Animal">
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="NumberOfLegs" type="xs:int" />
</xs:sequence>
</xs:complexType>
</xs:schema>

但是我希望能够将 XSD 注释作为元数据添加到类中,这样 XSD 就可以显示为

<xs:complexType name="Animal">
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="NumberOfLegs" type="xs:int">
<xs:annotation>
<xs:documentation>Will need to be greater than 0 to walk!</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>

有没有什么简洁的方法可以在 C# 代码中实现这一点?向 xml 元素/属性添加任何类型的描述的任何方式都可以。注释必须与实际代码类似,如下所示:

public class Animal
{
[XmlAnnotation("Will need to be greater than 0 to walk!")]
public int NumberOfLegs;
}

也就是说,它需要从评论中自动记录。

最佳答案

尝试以下操作:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Xml;
using System.Xml.Linq;
using System.IO;


namespace ConsoleApplication49
{

class Program
{
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
StreamReader reader = new StreamReader(FILENAME);
reader.ReadLine(); //skip the xml identification with utf-16 encoding
XDocument doc = XDocument.Load(reader);

XElement firstNode = (XElement)doc.FirstNode;
XNamespace nsXs = firstNode.GetNamespaceOfPrefix("xs");

XElement sequence = doc.Descendants(nsXs + "element").FirstOrDefault();

sequence.Add(new XElement(nsXs + "annotation",
new XElement(nsXs + "documention", "Will need to be greater than 0 to walk!")
));

}
}


}

关于c# - 从 C# 类代码生成 xsd 注释和文档标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43197599/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com