【问题标题】:.NET JAXB equivalent?.NET JAXB 等价物?
【发布时间】:2011-01-27 02:26:24
【问题描述】:

.NET 中是否有与 JAXB 等效的库?我正在尝试将我得到的 XML 转换为 .NET 类。我有 XSD,但不确定如何将收到的 XML 转换为具体的类?我使用XSD tool 从模式生成一个类,但我想将我即时收到的 XML 转换为我可以在代码中使用的对象。

我已经看到处理此问题的线程 here,但我的查询是 - 我希望创建的对象包含我在 XML 中收到的数据(即必须填充字段值)。

【问题讨论】:

    标签: c# .net jaxb


    【解决方案1】:

    您可以使用 xsd.exe 生成类,然后在代码中使用 XmlSerializer 来填充类。例如,如果 xsd.exe 创建了一个名为 Foo 的类,您可以这样写:

    Foo someFoo;
    using (var stream = new FileStream("foo.xml", FileMode.Open))
    {
        var serializer = new XmlSerializer(typeof(Foo));
        someFoo = serializer.Deserialize(stream);
    }
    

    【讨论】:

      【解决方案2】:

      这是一种更好的方法,更接近我的目标:

      static public string serializeObject(ProductPriceLines objecteToSerialize)
          {
              System.Xml.Serialization.XmlSerializer mySerializer = new System.Xml.Serialization.XmlSerializer(typeof(ProductPriceLines));
      
              System.IO.MemoryStream t = new System.IO.MemoryStream();
              mySerializer.Serialize(t, objecteToSerialize);
      
      
              UTF8Encoding utf = new UTF8Encoding();
              string strbytes = utf.GetString(t.ToArray());
      
      
              return strbytes;
          }
      

      【讨论】:

      • 不是说你错了,只是好奇为什么这个解决方案比 Mike Two 的更好。回复后 +1。
      • 您的问题要求 XML => 对象。你的答案是相反的:object => XML.
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-02
      • 2012-11-28
      相关资源
      最近更新 更多