gpt4 book ai didi

c# - 如何使 C# Web 服务接受自定义对象,包括 XSD 中定义的未绑定(bind)元素

转载 作者:太空狗 更新时间:2023-10-29 21:59:27 25 4
gpt4 key购买 nike

我正在实现一个 C# 网络服务,该服务应该接受包含无限数量元素的自定义消息。

最初,该对象是在如下 XSD 文件中定义的:

<xsd:element name="LogMessage">  
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="avantlog" type="tns:LogEventType">
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="LogEventType">
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="context" type="tns:ContextType">
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ContextType">
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="unbounded" name="severity" type="xsd:string">
</xsd:element>
</xsd:sequence>
</xsd:complexType>

并且,在实现 Web 服务的 CS 文件中,我为此准备了一个结构:

public struct logevent  
{
public ContextType context;
public struct ContextType
{
public string[] severity;
}
}

但是,当我尝试使用一行访问“serverity”的元素时,

String temp = logevent.context.severity.GetValue(0).ToString()  

,程序抛出如下错误:

"Index was outside the bounds of the array."  

当我在 XSD 文件中将元素从“unbounded”更改为“1”并且还修改了“public string[] severity;”时到 'public string severity;',它有效。

任何人都可以帮助我使网络服务接受包含无限数量元素的消息吗?

最佳答案

对应指定XSD(如果使用XmlSerializer序列化)的代码如下:

[XmlRoot("LogMessage"]
public class LogMessage
{
[XmlElement("avantlog")]
public LogEventType AvantLog {get; set;}
}

public class LogEventType
{
[XmlArray("context")]
[XmlArrayItem("severity")]
public string[] Severity {get; set;}
}

关于c# - 如何使 C# Web 服务接受自定义对象,包括 XSD 中定义的未绑定(bind)元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5070504/

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