当前位置: 首页 > 知识库问答 >
问题:

如何反序列化列表以获取元素值

陆文博
2023-03-14

我尝试测试对我的Web API的1个HTTP POST XML请求,XML如下所示:

<trx>
            <header>...</header>
            <body>
        <unity keycnt="4">
            <key param="param1"><![CDATA[value1]]</key>
            <key param="param2"><![CDATA[value2]]</key>
            <key param="param3"><![CDATA[value3]]</key>
            <key param="param4"><![CDATA[value4]]</key>
            </unity>
        </body>
        </trx>

当我用如下类列表反序列化请求时:

 [Serializable()]
    [XmlRoot(ElementName="trx")]
    public class Trx {
        [XmlElement("header")]
        public Header Header { get; set;}
         [XmlElement("body")]
        public Body Body{ get; set;}
    }

类体:

 [Serializable()]
    public class Body{
        [XmlElement("unity")]
        public Unity Unity{ get; set;}
    }

班级团结:

  [Serializable()]
        public class Unity{
            [XmlAttribute("keycnt")]
            public string keycnt{ get; set;}
       [XmlElement("key")]
            public List<Key> KeyList{ get; set;}
        }

类别密钥:

  [Serializable()]
            public class Key{
                [XmlAttribute("param")]
                public string param{ get; set;}
            }

反序列化后,我得到了除了键列表项的值之外的所有属性。(

共有2个答案

庞元青
2023-03-14

检查您的输入XML。您的XML格式错误。这是更正的一个。缺少CDATA元素

<trx>
<header></header>
<body>
    <unity keycnt="4">
        <key param="param1"><![CDATA[value1]]></key>
        <key param="param2"><![CDATA[value2]]></key>
        <key param="param3"><![CDATA[value3]]></key>
        <key param="param4"><![CDATA[value4]]></key>
    </unity>
</body>
澹台阳秋
2023-03-14

您需要使用string数据类型向Key类添加一个属性,然后您的XmlSerializer将为您反序列化CDATA中的值。

并用 [Xml 文本] 装饰此属性。此属性可以将 CDATA 作为 xml 中特定节点中的文本提供。

所以你的Key类应该是。

[Serializable()]
public class Key
{
    [XmlAttribute("param")]
    public string param { get; set; }
    [XmlText]
    public string Text { get; set; }
}
 类似资料:
  • 问题内容: 假设我有3个列表:[‘q’,’w’],[‘a’,’s’],[‘z’,’x’]。如何从这些列表中获取可能的组合列表?所以我得到一个列表[[‘q’,’a’,’z’],[‘q’,’s’,’z’]]等。我为两个方法创建了一个方法,但对N个列表却找不到一个方法: 我发现这是由番石榴的Sets.cartesianProduct完成的。 问题答案: 您需要N个嵌套循环,这使它变得很难。 您可以使用递

  • 问题内容: 使用,我可以将其发送到PHP页面。现在如何在PHP中反序列化它?它已在jQuery中序列化。 问题答案: 您无需从jquery 方法反序列化PHP中的任何内容。如果对数据进行序列化,则如果使用GET方法ajax请求,则应将其作为查询参数发送给PHP;如果使用POST ajax请求,则应将其作为vars发送。因此,在PHP中,您将访问类似或取决于请求类型的值。 该方法仅采用表单元素并将其

  • 问题内容: 我有具有特定名称的元素的NodeList,我想拥有所有theese节点的XPath。 我找不到方法。 我正在寻找类似GET_XPATH()的方法 有人知道该怎么做吗?甚至有可能吗? 如果可能,XSLT也可以使用它,但是如果有人知道Java中的这种可能性,则最好使用它。 原因:我需要一组指向XML库的指针。指向定义元素的指针。 输入示例: 输出: 问题答案: 以下样式表: XSLT 1.

  • 问题内容: 我有一个这样的清单: 我想获取T的.class。我该怎么做? 我的意思是: 编辑: 我尝试过: 当我调试它时 genericType 值: java.util.List 所以我认为这肯定是与该问题不同的问题:获取java.util.List的泛型类型,因为如果您使用声明了一个类并在以后的其他方法中分配了某些内容,则该类消失了。 问题答案: 您不能因为类型擦除。泛型类型在运行时未知(已被

  • 问题内容: 考虑以下: 如何获取列表中的元素数量? 问题答案: 该函数可以与Python中的几种不同类型一起使用-内置类型和库类型。例如: 官方2.x文档在这里: 官方3.x文档在这里:

  • ClassCastException:com.google.gson.internal.LinkedTreeMap不能强制转换为java.util.HashMap 提前谢了。