在我的项目中,我有一个由wcf公开的视图模型城市。
其中一个属性的命名方式与已经公开的契约的名称不同。
因此,我添加了DataMember属性并设置名称值,如下所示:
<DataContract(Namespace:=ServiceNamespace)> _
Public Class City
private mySelectedTranslation as String
<DataMember(Name:="CityName")> _
Public Property SelectedTranslation() As Strin
在C#中,如何使XmlSerializer在序列化期间而不是在反序列化期间忽略属性?(或者如何对Json.net做同样的操作?)
要防止属性被序列化,可以添加XmlIgnore属性:
[XmlIgnore]
public int FooBar {get;set;}
这将导致在序列化期间省略<FooBar>标记。
但是,这也意味着在反序列化过程中将忽略<FooBar>标记。
在我的示例中,我接受来自请求中的用户的项数组,对于每个项,如果用户希望添加、修改或删除项,则可以指定操作属性。我希望对GET列表调用使用相同的模型对象,并且不希望返回此操作属性。我想这是个很普通的案子
我正在序列化一个类的列表,我对生成的XML输出并不满意。
[Serializable()]
public class Foo
{
[XmlAttribute]
public String Property1 { get; set; }
public Foo() { }
}
public class Foo2
{
List<Foo> _list = new List<Foo>()
{
new Foo(){ Property1="hello"}
};
// ...
// code f
我很难找到一个通用的扩展方法,它可以将给定的对象序列化为SOAP格式的对象。实际的实现看起来有点像这样:
Foobar.cs
[Serializable, XmlRoot("foobar"), DataContract]
public class Foobar
{
[XmlAttribute("foo"), DataMember]
public string Foo { get; set; }
[XmlAttribute("bar"), DataMember]
public string Bar { get; s
我希望能够对子类进行XML序列化,但将其基类排除在序列化之外。
下面是我的类(配置为DataObjects.NET):
[Serializable]
[HierarchyRoot]
public class MyClass: Entity
{
[Field, Key] public int Id { get; private set; }
[Field(Length = 20)] public string Name { get; set; }
}
基类实体不能序列化,因为它没有无参数的构造函数。
我不会试图通过反序列化来重建对象(没有Liskov问题)。我只想要XML子类中的
我不明白为什么object是空的:
WebClient browse = new WebClient();
StreamReader res = new StreamReader(browse.OpenRead("http://ws.audioscrobbler.com/2.0/?method=track.getinfo&api_key=b25b959554ed76058ac220b7b2e0a026&artist=cher&track=believe"));
string result = res.Rea
我想将string[]类型的所有属性序列化为CSV。
例如,给定一个类:
public class Choice {
[XmlAttribute]
public string[] Options { get; set; }
}
和以下序列化代码:
var choice = new Choice() { Options = new[] {"op 1", "op 2"}};
var serializer = new XmlSerializer(typeof(Choice));
var sb = new StringBuilder();
seriali
[XmlRoot("Employees")]
public class Employee
{
[XmlElement("EmpId")]
public int Id { get; set; }
[XmlElement("Name")]
public string Name { get; set; }
}
和简单的方法,返回列表:
public static List<Employee> SampleData()
{
return new List<Employee
我一直在做反序列化的工作,结果被塞了下来。
这是我的课:
public class Parent
{
public List<Child> child {get;set}
}
public class Child
{
some properties
}
public class Child1 : Child
{
some properties
}
public class Child2 : Child
{
some properties
}
我有xml:
<Parent>
<Child AttribName="TypeO
我试图在我的xml中实现自动加密和解密,但它并不能正常工作,也就是说,数据没有加密。可能的原因是什么?我的代码如下所示。我使用的是XmlSerializer类。谢谢
[Serializable]
public class User
{
public string _username;
public string _password;
public string[] _roles;
[XmlIgnore]
public string Username
{
get { return _username; }
set
我试图将xml反序列化为对象。但是我不断地发现这个错误:
System.InvalidOperationException‘发生在System.Xml.dll附加信息中:XML (1,1)包含一个错误。
这是我用于反序列化的类。
[XmlRoot("MRData")]
public class DriverData
{
[XmlElement("series")]
public string series { get; set; }
[XmlElement("url")]
public string ur
我正在序列化对象列表List<TestObject>,而XmlSerializer生成了<ArrayOfTestObject>属性,我想重命名它或删除它。
可以通过创建封装列表为字段的新类来实现吗?
[XmlRoot("Container")]
public class TestObject
{
public TestObject() { }
public string Str { get; set; }
}
Lis
我有一些实体是从数据库生成的,我希望将它们序列化为XML。问题是,有些实体的列名不太方便用户,这反映在生成的实体的字段中。
是否有一个C#属性可以应用于类字段,以便向xml元素本身添加一个包含友好名称值的xml属性?例如,使用类似于XmlAttribute的内容:
public class Book
{
public string Title { get; set; }
[XmlAttribute("friendlyName","International Standard Book Number")]
public string IS
我有一个非常基本的类,它是一个子类列表,再加上一些摘要数据。
[Serializable]
public class ProductCollection : List<Product>
{
public bool flag { get; set; }
public double A { get; set; }
public double B { get; set; }
public double C { get; set; }
}
// method to save this class
private void SaveProductColle
我有两个类,我们称它们为A和B
public class A
{
public int foo;
public int bar;
}
public class B
{
public class A;
}
现在,当我序列化object B时,XmlSerializer正在做您期望它做的事情:
<?xml version="1.0" encoding="utf-8"?>
<B>
<A>
<foo>0</foo>
<bar>0<
我正在c#中创建一个模型,我的想法是,以后我所做的应用程序将从xml读取数据并将其转换为object,但是我想要生成一个示例xml。我怎么能这么做?
我的示例c#类是:
public class SiteDefinition
{
public string Name { get; set; }
public string Version { get; set; }
public List<MasterPage> MasterPages { get; set; }
public List<File>
我有一个类,需要使用XMLserializer在C#中序列化
[DataContract]
Public class X
{
[Datamember]
Public List<string> CodeList {get;set;}
}
但是,由于CodeList的数据类型是字符串,所以我的xml数据类型低于xml。
<CodeList>
<string>asd</string>
<string>cvb</string>
</CodeList>
但是我想以字符串显示为代码的格式显示xml,也就是说,我想给stri
我试图序列化/反序列化以下XML代码结构:
<Person>
<Name/>
<Age/>
<Address>
<BuildingNumber/>
<Street/>
<Town/>
<PostCode/>
</Address>
</Person>
使用类
public class Person {
public string Name { get; set; }
我不明白我做错了什么,结果集是空的。
我的代码:
class Class1
{
public static object DeSerialize()
{
object resultObject;
XmlSerializer serializer = new XmlSerializer(typeof(PointsContainer));
using (TextReader textReader = new StreamReader(@"d:\point.xml"))
我想为泛型类创建一个xml。其中一个属性具有泛型类型。对于这个属性,我不想使用属性名称作为它的XML元素名,而是使用泛型类型的名称。
这门课看起来如下:
[XmlRoot("Entity")]
public class StoreItem<TEntity>
where TEntity : class, new()
{
/// <summary>
/// Gets and sets the status of the entity when storing.
/// </summary>
[XmlAttr
我有以下类和包含它的列表:
public class Transport
{
public string TransportType { get; set; }
public string Mode { get; set; }
public class Coordinates
{
public float ID { get; set; }
public float LocX { get; set; }
public float LocY { get; set; }
public float LocZ
我希望创建一个通用抽象类型,作为xml序列化类型的基础:
public abstract class RootElementBase<TEelment>
{
public IList<TElement> SubElements {get;set;}
public RootElementBase(){
SubElements = new List<T>();
}
}
我会这样用:
[XmlRoot(ElementName = "myroot")]
public class MyRoot: Root
我已经使用XmlSerializer很多年了,没有任何问题。我开始了一个新的项目,我做了一个扩展列表。当我序列化数据时,我丢失了添加到类中的属性。显然,我可以通过改变我的类来修复这个问题,这样它就不再扩展List了。我真的想知道为什么XmlSerializer会忽略列表中的属性。
var data = new Data { Number = 3 };
data.AddRange(Enumerable.Range(5, 5));
var serializer = new XmlSerializer(typeof(Data));
var memoryStream = new MemoryStrea
我想序列化一个MyClass,它是一个包含列表MyClass的类。 在 XML 中,我只想写 myClass.Name,然后当我反序列化它时,我会找到哪个 MyClass 应该在哪个其他 MyClass 中。我有以下代码可以将 MyClass 列表正确序列化为string串列表。但是,它不会反序列化字符串列表。 //List of actual object. It's what I use when I work with the object.
[XmlIgnore]
public List<TaskConfiguration> ChildTasks { get; s