簡體   English   中英

XML 反序列化不同的對象 C#

[英]XML Deserialization Diffrent Objects C#

也許有人可以給我一個處理特定情況的提示。 我有一個無法更改的 XML,如下所示:

<?xml version = "1.0" encoding = "ISO-8859-1"?>
<bde>
    <Host name="172.16.25" port="1234"/>
    <Datafile name="bde-%d-%s.txt"/>
    <Linien>
        <Linie id="2,3,4,6,7,10,12">
            <Parameter name="a"/>
            <Parameter name="b"/>
            <Parameter name="c"/>
            <Parameter name="d"/>
            <Parameter name="e"/>
            <Parameter name="f"/>
            <Parameter name="g"/>
            <Parameter name="h"/>
            <Parameter name="i"/>
            <Parameter name="j"/>
            <Parameter name="k"/>
            <Parameter name="l"/>
        </Linie>
        <Linie id="1,11">
            <Parameter name="a"/>
            <Parameter name="n"/>
        </Linie>
        <Linie id="5">
            <Parameter name="a"/>
            <Parameter name="b"/>
            <Parameter name="n"/>
            <Parameter name="ö"/>
            <Parameter name="z"/>
            <Parameter name="e"/>
            <Parameter name="r"/>
            <Parameter name="z"/>
        </Linie>
        <Linie id="8">
            <Parameter name="a"/>
        </Linie>
        <Linie id="9">
            <Parameter name="a"/>
            <Parameter name="p"/>
            <Parameter name="z"/>
            <Parameter name="y"/>
            <Parameter name="q"/>
            <Parameter name="oi"/>
            <Parameter name="c"/>
            <Parameter name="k"/>
            <Parameter name="b"/>
        </Linie>
    </Linien>
</bde>

現在我必須將“Linien”序列化為對象,但它們具有不同的參數計數。 是否可以在 C# 中像這樣讀取這個 XML?

最好的問候, 亨德里克

嘗試以下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
namespace ConsoleApplication166
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XmlReader reader = XmlReader.Create(FILENAME);
            XmlSerializer serializer = new XmlSerializer(typeof(BDE));
            BDE bde = (BDE)serializer.Deserialize(reader);
        }
    }
    [XmlRoot("bde")]
    public class BDE
    {
        public Host Host { get; set; }
        public Datafile Datafile { get; set; }
        [XmlArray(ElementName = "Linien")]
        [XmlArrayItem(ElementName = "Linie")]
        public List<Linie> Linie { get; set; }
    }
    public class Host
    {
        [XmlAttribute()]
        public string name { get; set; }
        [XmlAttribute()]
        public string port { get; set; }
    }
    public class Datafile
    {
        [XmlAttribute()]
        public string name { get; set; }
    }
    public class Linie
    {
        [XmlAttribute()]
        public string id { get; set; }
        [XmlElement()]
        public List<Parameter> Parameter { get; set; }
    }
    public class Parameter
    {
        [XmlAttribute()]
        public string name { get; set; }
    }

 
 
}

如果我猜對了,您希望將 XML 轉換為 C# 數據結構。 如果是這樣,這是可能的,並且有一些庫可以幫助您解決這個問題。

就個人而言,我會創建一個 Linie 和 Linien 類,其中 Linie 類具有一個 Linie 對象的向量(因此每個 Linie 對象將支持不同數量的 Linie)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM