gpt4 book ai didi

c# - XML 元素和数组

转载 作者:太空宇宙 更新时间:2023-11-03 16:38:07 25 4
gpt4 key购买 nike

我正在尝试与发送以下两条消息的硬件进行通信。在收到消息时,我不知道我得到的是这两个消息结构中的哪一个。使用 XSD,我采用了 .xml 并分别为每个文件创建了 .xsd 和 C# 文件,但这在最终解决方案中是不切实际的,因为我不知道我将收到的消息。开发人员似乎在第一个实例中将“ParameterValue”用作数组,第二个实例将其用作简单字符串。是否可以使用一段代码来“反序列化”两条消息?如果我在第二条消息上使用第一条消息的代码,则 ParameterValue 字段是一个空数组。

==第一条消息==

<Parameters>
<Parameter>
<ParameterName>ResponseCode</ParameterName>
<ParameterValue>2</ParameterValue>
</Parameter>
<Parameter>
<ParameterName>ResponseValue</ParameterName>
<ParameterValue>
<ReturnParameters>
<ReturnParameter>
<ParameterName>Data1</ParameterName>
<ParameterValue>Parameter Not Found</ParameterValue>
</ReturnParameter>
<ReturnParameter>
<ParameterName>Data2</ParameterName>
<ParameterValue>Parameter Not Found</ParameterValue>
</ReturnParameter>
</ReturnParameters>
</ParameterValue>
</Parameter>
</Parameters>

==第二条消息==

<Parameters>
<Parameter>
<ParameterName>ResponseCode</ParameterName>
<ParameterValue>2</ParameterValue>
</Parameter>
<Parameter>
<ParameterName>ResponseValue</ParameterName>
<ParameterValue>Success</ParameterValue>
</Parameter>
</Parameters>

最佳答案

mixed="true" 添加到您的 XSD。这表明您想要将 XML 元素与文本结合起来。它将在您的 C# 类中产生一个 Text 字段。

http://www.w3schools.com/schema/schema_complex_mixed.asp

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="Parameters" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="Parameters" msdata:IsDataSet="true" msdata:Locale="en-US">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="Parameter">
<xs:complexType>
<xs:sequence>
<xs:element name="ParameterName" type="xs:string" minOccurs="0" />
<xs:element name="ParameterValue" minOccurs="0" maxOccurs="unbounded">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element name="ReturnParameters" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="ReturnParameter" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="ParameterName" type="xs:string" minOccurs="0" />
<xs:element name="ParameterValue" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>

public partial class ParametersParameterParameterValue {

[System.Xml.Serialization.XmlArrayAttribute(
Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]

[System.Xml.Serialization.XmlArrayItemAttribute(
"ReturnParameter",
typeof(ParametersParameterParameterValueReturnParametersReturnParameter),
Form=System.Xml.Schema.XmlSchemaForm.Unqualified,
IsNullable=false)]

public ParametersParameterParameterValueReturnParametersReturnParameter[][]
ReturnParameters { get; set; }

[System.Xml.Serialization.XmlTextAttribute()]
public string[] Text { get; set; }
}

关于c# - XML 元素和数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8502403/

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