在.NET Core中,我如何将字符串xml与参数数组转换为对象?

我得到一个xml字符串,我需要把这个xml转换成一个.NET对象,然后,创建一个服务来反序列化或xml.但它不工作在 “参数 “道具。

编码。

[XmlRoot(ElementName = "mse-response")]
public class xmlObject
{

    [XmlElement(DataType = "string", ElementName = "status-code")]
    public string StatusCode { get; set; }

    [XmlElement(DataType = "string", ElementName = "profile")]
    public string Profile { get; set; }

    [XmlElement(DataType = "string", ElementName = "transaction-id")]
    public string TransactionId { get; set; }

    [XmlArray(ElementName = "parameters")]
    public Item[] Parameters { get; set; }

}

public class Item
{
    [XmlElement(ElementName = "param-name")]
    public string Name { get; set; }

    [XmlElement(ElementName = "param-value")]
    public string Value { get; set; }
}

帮助者:

public class XmlHelperService 
{
    public static T XmlDeserializeFromString<T>(string xmlString)
    {
        var serializar = new XmlSerializer(typeof(T));

        using (var reader = new StringReader(xmlString))
        {
            return (T)serializar.Deserialize(reader);
        }
    }
}

还有我的xml:

<?xml version="1.0" encoding="UTF-8" ?>
<mse-response>
  <status-code>0</status-code>
  <profile>profleID</profile>
  <transaction-id>1010608241424538336</transaction-id>
  <parameters>
    <param-item>
      <param-name>INITIALDATE</param-name>
      <param-value>0608151207</param-value>
    </param-item>
    <param-item>
      <param-name>SMPP_MESSAGE_STATUS</param-name>
      <param-value>DELIVRD</param-value>
    </param-item>
    <param-item>
      <param-name>ANUM</param-name>
      <param-value>333</param-value>
    </param-item>
    <param-item>
      <param-name>BNUM</param-name>
      <param-value>1191000000</param-value>
    </param-item>
    <param-item>
      <param-name>FINALDATE</param-name>
      <param-value>0608151207</param-value>
    </param-item>
    <param-item>
      <param-name>MSGSTATUS</param-name>
      <param-value>2</param-value>
    </param-item>
  </parameters>
</mse-response>

解决方案:

1) 你可以使用一个工具来 创建XSD的xml.

2) 一旦你有了XSD,你可以使用 xsd.exe 从Visual Studio SDK中生成C#类。

命令是。

xsd.exe /classes /namespace:MyTest generatedXsd.xsd

3) XSD或生成的类可以被添加到你的项目中,或者在这个测试中,我们只查看生成的类的属性。properties,来了解它是如何产生的。

[System.Xml.Serialization.XmlArrayItemAttribute("param-item", IsNullable=false)]
public mseresponseParamitem[] parameters {
    get {
        return this.parametersField;
    }
    set {
        this.parametersField = value;
    }
}

所以.., 办法 是,在类 xmlObject 定产 propertiesXmlArrayItemAttribute 属性。

[XmlRoot(ElementName = "mse-response")]
public class xmlObject
{
    ...
    [XmlArrayItemAttribute("param-item", IsNullable = false)]
    public Item[] parameters { get; set; }
}

给TA打赏
共{{data.count}}人
人已打赏
未分类

kubernetes无法在VirtualCenter部分存储数据,分节变量insecure-flag。

2022-9-13 13:01:39

未分类

dbCommand.Append语法错误,用@参数将EQUALS转换为LIKE。

2022-9-13 13:01:43

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索