标签: xmlserializer

DataContractSerializer如何写入私有字段?

我理解XMLSerializer如何通过使用反射来确定它应该用于序列化或反序列化XML的公共读/写字段或属性.然而,XMLSerializer要求字段是公共的和读/写.

但是,DataContractSerializer能够读取或写入类中的完全私有字段.所以我想知道如何明确给出DataContractSerializer对我的类的附加访问权限.

.net c# xml datacontractserializer xmlserializer

6
推荐指数
1
解决办法
2534
查看次数

如何阻止XmlSerializer发出空标记?

我有一个这样的对象,

public class UserObj
{
    public string First {get; set;}
    public string Last  {get; set;}
    public addr Address {get; set;}

}

public class addr
{
    public street {get; set;}
    public town   {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

现在,当我在它上面使用XmlSerializer并且街道和城镇都是空的时,我在XML输出中得到了这个,

 <Address />
Run Code Online (Sandbox Code Playgroud)

有没有办法不输出这个空标签?

谢谢

.net xml-serialization xmlserializer

6
推荐指数
2
解决办法
667
查看次数

将通用对象序列化为SOAP格式化流的扩展方法

我很难找到一个通用扩展方法,它将给定对象序列化为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; set; }

    public Foobar() {}
}
Run Code Online (Sandbox Code Playgroud)

Lipsum.cs

[Serializable, XmlRoot("lipsum"), XmlType("lipsum"), DataContract]
public class Lipsum
{
    private List<Foobar> lipsum = new List<Foobar>();

    [XmlElement("foobar"), DataMember]
    public List<Foobar> Lipsum { get { return lipsum; } }
}
Run Code Online (Sandbox Code Playgroud)

}

Extensions.cs

public static void SerializeToSoap<T>(this Stream target, T source)
{
    XmlTypeMapping xmlTypeMapping = (new SoapReflectionImporter().ImportTypeMapping(typeof(T)));
    XmlSerializer xmlSerializer = …
Run Code Online (Sandbox Code Playgroud)

c# serialization soap datacontractserializer xmlserializer

6
推荐指数
1
解决办法
6080
查看次数

错误:无法加载文件或程序集"ExcelAddIn1.XmlSerializers"或其中一个依赖项.该系统找不到指定的文件

我有一个excel的加载项目.它在我的电脑上工作正常.但是,当我在客户端计算机上安装它时,它给了我提到的错误消息.

  1. 我使用project-> properties-> publish发布了它.
  2. 我勾选了"启用我的代码".
  3. 我清除了'抛出'和'用户未处理'的'未找到文件异常'的刻度
  4. 我在客户端上使用项目文件夹中"publish"文件夹中的"setup"文件设置项目.
  5. 在publish-> prerequisites中,我勾选了这些项目:

    .net框架sp1

    Microsoft .net框架4

    Microsoft Office 2007主互操作程序集

    用于办公室运行时的Microsoft visual studio 2010工具

    Windows安装程序4.5

  6. 我正在使用JSON.这是我班级的代码:

    [Serializable]
    [JsonObject(MemberSerialization.OptIn)]
    public class documentSchemaRestInfo
    {
        [System.Runtime.Serialization.DataMember]
        [JsonProperty]
        public double id { get; set; }
        [System.Runtime.Serialization.DataMember]
        [JsonProperty]
        public string name { get; set; }
    
        [System.Runtime.Serialization.DataMember]
        [JsonProperty]
        public string description { get; set; }
    
        [System.Runtime.Serialization.DataMember]
        [JsonProperty]
        public string[] fields { get; set; }
    }
    
    Run Code Online (Sandbox Code Playgroud)

    //*********************

  7. 使用该类的代码:

    public List<DocumentField> getSchemaOfGroup(documentGroupPk groupPK)
    {
        List<DocumentField> result = new List<DocumentField>();
        HttpWebRequest request = (HttpWebRequest)WebRequest. …
    Run Code Online (Sandbox Code Playgroud)

.net json publish vsto xmlserializer

6
推荐指数
1
解决办法
1600
查看次数

如何使用XmlSerializer序列化Object类型的属性

我有一个属性:

public object Tag
Run Code Online (Sandbox Code Playgroud)

但它可以包含有限数量的类型,遗憾的是没有基类型(对象类型除外).但是,当我使用此属性序列化对象时,它不会被序列化.有没有办法用可能的类型指示XmlSerializer?

.net c# .net-4.0 xmlserializer

6
推荐指数
1
解决办法
1万
查看次数

反序列化集合时未调用Setter

我试图用XmlSerializer做一个非常简单的序列化:

public struct XmlPerson
{
    [XmlAttribute] public string Id   { get; set; }
    [XmlAttribute] public string Name { get; set; }
}

public class GroupOfPeople
{
    private Dictionary<string, string> _namesById = new Dictionary<string, string>();

    //pseudo property for serialising dictionary to/from XML
    public List<XmlPerson> _XmlPeople
    {
        get
        {
            var people = new List<XmlPerson>();
            foreach (KeyValuePair<string, string> pair in _namesById )
                people.Add(new XmlPerson() { Id = pair.Key, Name = pair.Value });

            return people;
        }
        set
        {
            _namesById.Clear();
            foreach (var person in value) …
Run Code Online (Sandbox Code Playgroud)

c# collections setter xmlserializer

6
推荐指数
2
解决办法
2973
查看次数

Web Api XML,如何设置编码,版本,xmlns:xsi和xsi:schemaLocation

我正在使用asp.net MVC4 Web Api.

我已经设定:

Dim xml = GlobalConfiguration.Configuration.Formatters.XmlFormatter
xml.UseXmlSerializer = True
Run Code Online (Sandbox Code Playgroud)

我创建了一个类,它指定了我需要的XML,这很有效.

我几乎在那里,但我不确定如何设置:

<?xml version="1.0" encoding="utf-8"?>
Run Code Online (Sandbox Code Playgroud)

以及如何设置元素属性:

xmlns:xsi和xsi:schemaLocation

我可以使用属性设置吗?

xml-encoding xmlserializer asp.net-mvc-4 asp.net-web-api

6
推荐指数
1
解决办法
2510
查看次数

反序列化XML为集合属性返回null

我正在尝试反序列化以下XML:

<?xml version="1.0" encoding="utf-8" ?> 
<mf:somedata xmlns:mf="urn:somedata">
    <CurrentAccount>
        <AccountType>test</AccountType>
        <Charge>
            <ChargeType>test</ChargeType>
        </Charge>
    </CurrentAccount>
    <CurrentAccount>
        <AccountType>test 2</AccountType>
        <Charge>
            <ChargeType>test 2</ChargeType>
        </Charge>
    </CurrentAccount>
</mf:somedata>
Run Code Online (Sandbox Code Playgroud)

使用以下类:

[XmlRoot("somedata", Namespace = "urn:somedata")]
public class MfCurrentAccounts
{
    [XmlElement("CurrentAccount")]
    public CurrentAccount[] CurrentAccounts { get; set; }
}

public class CurrentAccount
{
    public string AccountType { get; set; }

    [XmlElement("Charge")]
    public Charge[] Charges { get; set; }
}

public class Charge
{
    public string ChargeType { get; set; }
}

var c = new XmlSerializer(typeof(MfCurrentAccounts)).Deserialize(new StringReader(xml)) as MfCurrentAccounts; …
Run Code Online (Sandbox Code Playgroud)

c# xml xmlserializer deserialization

6
推荐指数
1
解决办法
4243
查看次数

如何使用XmlSerializer将异构子节点反序列化为集合?

我正在使用C#/ .NET反序列化类似于此的XML文件:

<?xml version="1.0" encoding="utf-8" ?>
<Books>
  <Book
    Title="Animal Farm"
    >
    <Thing1>""</Thing1>
    <Thing2>""</Thing2>
    <Thing3>""</Thing3>
    ...
    <ThingN>""</ThingN>
  </Book>
  ... More Book nodes ...
</Books>
Run Code Online (Sandbox Code Playgroud)

对于反序列化的XML,我的类看起来像:

[XmlRoot("Books")]
public class BookList
{
    // Other code removed for compactness. 

    [XmlElement("Book")]
    public List<Book> Books { get; set; }
}

public class Book
{
    // Other code removed for compactness. 

    [XmlAttribute("Title")]
    public string Title { get; set; }

    [XmlAnyElement()]
    public List<XmlElement> ThingElements { get; set; }

    public List<Thing> Things { get; set; }
}  

public class …
Run Code Online (Sandbox Code Playgroud)

.net c# xml xmlserializer

6
推荐指数
1
解决办法
3465
查看次数

强制 XMLSerializer 不折叠空标签?

是否可以通过任何配置选项告诉 JavaScriptXMLSerializer不要将空标签折叠为自闭合标签?我将一个 xml 字符串输入到 xml 解析器中,然后在对树进行修改后重新序列化它,但是在输入中有一个显式结束标记的地方,它在输出中折叠为一个自结束标记,这会导致问题。

javascript xmlhttprequest xmlserializer internet-explorer-11

5
推荐指数
1
解决办法
1024
查看次数