在 C# 中使用命名空间通配符反序列化 XML

问题描述 投票:0回答:0

我正在尝试反序列化命名空间每年都在变化的文档。我要反序列化的那个是去年的,但我有一个与前一年不同的模式。

今年的档案长这样

<n1:Form109495BTransmittalUpstream xmlns="urn:us:gov:treasury:irs:ext:aca:air:ty22">
    <Form1094BUpstreamDetail recordType="String" lineNum="0">
    </Form1094BUpstreamDetail>
</n1:Form109495BTransmittalUpstream>

我的模式有这个命名空间

        [System.Xml.Serialization.XmlElementAttribute(Namespace = "urn:us:gov:treasury:irs:ext:aca:air:ty21")]
        public Form1094BUpstreamDetail Form1094BUpstreamDetail
        {
            get
            {
                return this.form1094BUpstreamDetailField;
            }
            set
            {
                this.form1094BUpstreamDetailField = value;
            }
        }

这是我用来反序列化的代码

                // Now load the request
                using (StreamReader reader = new StreamReader(requestFile))
                {
                    // Now load both
                    XmlSerializer serializer = new XmlSerializer(typeof(Form109495BTransmittalUpstream));

                    // Now decode to the class
                    xmlRequest = (Form109495BTransmittalUpstream)serializer.Deserialize(readerReader);
                }

有没有办法在命名空间中使用通配符,或者我是否必须完全忽略命名空间?

c# .net serialization xml-serialization
© www.soinside.com 2019 - 2024. All rights reserved.