gpt4 book ai didi

来自 xml 的 C# 类

转载 作者:行者123 更新时间:2023-11-30 21:14:51 24 4
gpt4 key购买 nike

我正在使用 xsd 从 xml 文件生成类。它工作正常,但 xml 文件的一部分没有按照我的意愿生成。

这是 xml 的示例部分:

<Product>
<p0>Stapler</p0>
<p1>1.50</p1>
<p2>0</p2>
</Product>

在从 xml 生成的 xsd 中,我看到了这个部分:

<xs:element name="Product" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="p0" type="xs:string" minOccurs="0" />
<xs:element name="p1" type="xs:decimal" minOccurs="0" />
<xs:element name="p2" type="xs:decimal" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>

这里的问题是我尝试反序列化的 xml 响应在 Product 部分中会有不同数量的元素。在上面的例子中,它从 p0 到 p2。其他响应可能从 p0 到 p8。

有没有办法让我生成一个我的类,以便它可以处理产品的可变数量的元素?

最佳答案

你有两个选择:

  1. 如果您想保持简单,并且元素的顺序始终是相同的类型(因此它始终是字符串、小数、整数等),那么只需使用 Product 类型生成全部 8 种模式。

  2. 使您的架构更复杂,并使“产品”成为 ProductType 的列表(这将定义每个产品是什么)。

类似于:

<Product>
<ProductType id="name" _type="xs:string">
<Value>Stapler</Value>
</ProductType>
<ProductType id="cost" _type="xs:decimal">
<Value>1.50</Value>
</ProductType>
<ProductType id="quantity" _type="xs:decimal">
<Value>0</Value>
</ProductType>
</Product>

它是 xml,所以有很多好的方法可以做到这一点。

关于来自 xml 的 C# 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6020326/

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