标签: xml-serialization

使用.NET XML序列化在其他元素中包装序列化属性

我使用C#+ VSTS2008 + .Net 3.0来进行XML序列化.代码工作正常.下面是我的代码和当前序列化的XML结果.

现在我想在输出XML文件中添加两个附加层.这是我期望的XML结果.有什么简单的方法吗?我不确定NestingLevel是否可以帮助这样做.我想找到一种不会改变MyClass和MyObject结构的简单方法.

预期的XML序列化结果,

<?xml version="1.0"?>
<MyClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <MyObjectProperty>
    <AdditionalLayer1>
      <AdditionalLayer2>
        <ObjectName>Foo</ObjectName>
      </AdditionalLayer1>
    </AdditionalLayer2>
  </MyObjectProperty>
</MyClass>
Run Code Online (Sandbox Code Playgroud)

当前的XML序列化结果,

<?xml version="1.0"?>
<MyClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <MyObjectProperty>
    <ObjectName>Foo</ObjectName>
  </MyObjectProperty>
</MyClass>
Run Code Online (Sandbox Code Playgroud)

我目前的代码,

public class MyClass
{
    public MyObject MyObjectProperty;
}
public class MyObject
{
    public string ObjectName;
}

public class Program
{
    static void Main(string[] args)
    {
        XmlSerializer s = new XmlSerializer(typeof(MyClass));
        FileStream fs = new FileStream("foo.xml", FileMode.Create);
        MyClass instance = new MyClass();
        instance.MyObjectProperty = new MyObject();
        instance.MyObjectProperty.ObjectName = "Foo";
        s.Serialize(fs, …
Run Code Online (Sandbox Code Playgroud)

.net c# xml xml-serialization visual-studio-2008

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

在xml中编码特殊字符

如何在xml中编码特殊字符?例如:我的xml中有一个特殊字符mu,由于这个字符,转换将失败,任何信息都会有所帮助

谢谢Preetham

xml xml-serialization

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

单声道中的XML序列化问题

这是我的班级:

[Serializable()]
    [XmlRootAttribute("Language")]
    public class Language : ISerializable
    {
        string Id {
            get;
            set;
        }
        string Part2B {
            get;
            set;
        }
        string Part2T {
            get;
            set;
        }
        string Part1 {
            get;
            set;
        }
        string Scope {
            get;
            set;
        }
        string LanguageType {
            get;
            set;
        }
        string RefName {
            get;
            set;
        }
        string Comment {
            get;
            set;
        }
Run Code Online (Sandbox Code Playgroud)

剪断

我从Mono Web服务返回它们的数组,如下所示:

[WebMethod()]
        [ScriptMethod(ResponseFormat=ResponseFormat.Json)]
        public Language[] GetLanguages()
        {
            List<Language> languages;
            languages = GetLanguageList();
            return languages.ToArray();
        }
Run Code Online (Sandbox Code Playgroud)

但我得到的是:

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfLanguage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" …
Run Code Online (Sandbox Code Playgroud)

c# mono xml-serialization

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

派生类的XML序列化

我有一个元素数组,我需要使用XmlSerializer序列化.我遇到的问题是我有2个派生类,并序列化它们,因此它们有一个共同基础的元素名称,似乎不起作用.

所以,这就是XML的外观:

<Root>
    <Base> foo </Base>
</Root>
Run Code Online (Sandbox Code Playgroud)

相反,我得到了

<Root>
    <Derived1> foo </Derived1>
</Root>
Run Code Online (Sandbox Code Playgroud)

我序列化的元素数组的代码是

private object[] m_nodes;

[System.Xml.Serialization.XmlElementAttribute("Base", typeof(Derived1)]
[System.Xml.Serialization.XmlElementAttribute("Base", typeof(Derived2)]

public object[] Nodes
{
    get
    {
        return this.m_nodes;
    }
    set
    {
        this.m_nodes = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

使用上面的代码,我发现节点有一个反射错误.如果我将XmlEelementAttributes中的"Base"更改为"Derived1"和Derived2",它可以工作,但元素名称不正确.

[System.Xml.Serialization.XmlInclude(typeof(Derived1))]
public abstract class Base
{
    public Base()
    {

    }
}



[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public class Derived1: Base
{
    public Derived1()
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

任何帮助是极大的赞赏.非常感谢.

c# xml-serialization

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

Delphi 2010 DeHL序列化XML和自定义属性:如何工作?

我尝试使用Delphi 2010自定义属性调查DeHL,但出现问题。

 TAppParamTest = class
  public
    User: string;
    Password: string;
  end;

  TAppParam = class
  private
    FTest: TAppParamTest;
  public

    constructor Create;
    destructor Destroy; override;

    property Test: TAppParamTest read FTest write FTest;
  end;
Run Code Online (Sandbox Code Playgroud)

这很好用:当我序列化时我有这个

<TAppParam xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:DeHL="http://alex.ciobanu.org/DeHL.Serialization.XML" DeHL:class="AppParam_unt.TAppParam" DeHL:refid="1">
  <FTest DeHL:class="AppParam_unt.TAppParamTest" DeHL:refid="2">
    <User>User</User>
    <Password>Psw</Password>
  </FTest>
</TAppParam
Run Code Online (Sandbox Code Playgroud)

但我想要这个:

<TAppParam xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:DeHL="http://alex.ciobanu.org/DeHL.Serialization.XML" DeHL:class="AppParam_unt.TAppParam" DeHL:refid="1">
  <Test DeHL:class="AppParam_unt.TAppParamTest" DeHL:refid="2">
    <User>User</User>
    <Password>Psw</Password>
  </Test>
</TAppParam
Run Code Online (Sandbox Code Playgroud)

所以我想在类中添加自定义属性:

  TAppParam = class
      private
        [XmlElement('Test')] 
        FTest: TAppParamTest;
      public

        constructor Create;
        destructor Destroy; override;

        property Test: TAppParamTest read FTest …
Run Code Online (Sandbox Code Playgroud)

delphi xml-serialization delphi-2010 dehl

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

VB.NET,使用返回类型泛型函数?

目前我编写了一个反序列化XML的函数,如下所示.如何更改它,以便每次我想要序列化另一个对象类型时都不必替换类型?当前对象类型是cToolConfig.如何使此功能通用?

       Public Shared Function DeserializeFromXML(ByRef strFileNameAndPath As String) As XMLhandler.XMLserialization.cToolConfig
        Dim deserializer As New System.Xml.Serialization.XmlSerializer(GetType(cToolConfig))
        Dim srEncodingReader As IO.StreamReader = New IO.StreamReader(strFileNameAndPath, System.Text.Encoding.UTF8)
        Dim ThisFacility As cToolConfig

        ThisFacility = DirectCast(deserializer.Deserialize(srEncodingReader), cToolConfig)
        srEncodingReader.Close()
        srEncodingReader.Dispose()

        Return ThisFacility
    End Function


    Public Shared Function DeserializeFromXML1(ByRef strFileNameAndPath As String) As System.Collections.Generic.List(Of XMLhandler.XMLserialization.cToolConfig)
        Dim deserializer As New System.Xml.Serialization.XmlSerializer(GetType(System.Collections.Generic.List(Of cToolConfig)))
        Dim srEncodingReader As IO.StreamReader = New IO.StreamReader(strFileNameAndPath, System.Text.Encoding.UTF8)
        Dim FacilityList As System.Collections.Generic.List(Of cToolConfig)
        FacilityList = DirectCast(deserializer.Deserialize(srEncodingReader), System.Collections.Generic.List(Of cToolConfig))
        srEncodingReader.Close()
        srEncodingReader.Dispose()

        Return FacilityList
    End Function
Run Code Online (Sandbox Code Playgroud)

c# xml vb.net xml-serialization

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

如何序列化此.NET Collection项?

我正在尝试将POCO视图数据类xml序列化为xml.它序列化,但错误地生成一些xml.

例如.(目前的结果......不是我追求的那个)

<ReviewListViewData>
    <reviews>
        <review>....</review>
        ...
    </reviews>
</ReviewListViewData>
Run Code Online (Sandbox Code Playgroud)

我想要(注意我是如何删除根节点的?)...

<reviews>
    <review>....</review>
    ...
</reviews>
Run Code Online (Sandbox Code Playgroud)

类被定义为......

public class ReviewListViewData
{
    [XmlArray("reviews")]
    [XmlArrayItem("review")]
    public ReviewViewData[] Reviews { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这是一个在ASP.NET MVC ActionMethod中调用的示例方式: -

var reviewListViewData = GetReviewListViewData(...);
return XmlResult(reviewListViewData);  // (XmlResult referenced from MVCContrib).
Run Code Online (Sandbox Code Playgroud)

有人有什么想法吗?

.net c# asp.net-mvc xml-serialization

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

XML序列化DateTime的默认格式

我正在使用DataContractSerializer类序列化DateTime对象.我得到以下输出.

2013-05-21T10:50:23.5602265-04:00
Run Code Online (Sandbox Code Playgroud)

什么是最终组件?

YYYY-MM-DDTHH:MM:SS.zzzzzzz-??:??
Run Code Online (Sandbox Code Playgroud)

谢谢

c# serialization datetime xml-serialization

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

将对象与静态成员变量一起序列化为XML

我有以下包含静态成员变量的对象.

我想要做的是序列化这个对象并将其保存到XML.不幸的是,下面的代码似乎没有完成这项工作.

我很感激能帮到你.

[Serializable]
public class Numbers
{
    public int no;
    public static int no1;
    public SubNumbers SubNumber;
}

[Serializable]
public class SubNumbers
{
    public int no;
    public static int no2;
}

[TestMethod]
public void Serialize_Object_with_Static_Property_test()
{
    Numbers a = new Numbers();
    a.no = 12;
    Numbers.no1 = 345243;
    SubNumbers s = new SubNumbers();
    s.no = 459542; 
    SubNumbers.no2 = 9999999;
    a.SubNumber = s;
    String filename = @"a1.txt";
    FileStream fs = new FileStream(filename, FileMode.Open);
    XmlSerializer x = new XmlSerializer(typeof(Numbers));
    x.Serialize(fs, a); 
    fs.Close(); …
Run Code Online (Sandbox Code Playgroud)

.net c# serialization static xml-serialization

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

WCF中IsWrapped属性的用途是什么

WCF中"IsWrapped"属性的用途是什么.我应该在哪种情况下使用这个属性?为什么?

c# wcf serialization xml-serialization

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