繁体   English   中英

使用XMLSerializer将属性添加到XML节点

[英]Adding Attribute to an XML node using an XMLSerializer

我是这个网站的新手,所以请原谅我。

我正在使用C#完成的大型系统上工作,但在以下情况下,我找不到能完全实现我想要的方法。

我有一个包含如下内容的XML:

<XmlObject>
    <Info />
    <Objects>
        <Component>
            <FileData>C:\Folder\file.ext</FileData>
        <Component>
    </Objects>
</XmlObject>

我的目标是做到这一点:

<XmlObject>
    <Info />
    <Objects>
        <Component>
            <FileData Extension=".ext">C:\Folder\file.ext</FileData>
        <Component>
    </Objects>
</XmlObject>

但是这是我的限制:

XML文件是使用XmlSerializer创建的,并且对象“ Objects”下的所有内容都是通过反射创建的,因此我无法在FileData上添加[XmlElementAttribute]之类的标签。

当前,我们正在使用XmlAttributeOverrides将反射返回的类型添加到XmlSerializer。 我的问题是我对XmlAttributeOverrides并不了解,也找不到在其中添加此NodeAttribute的方法。

另外,Extension的值是元素值的实际扩展。 例:

<FileData Extension=".ext">C:\Folder\file.ext</FileData>
<FileData Extension=".png">C:\Folder\file.png</FileData>

非常感谢能够帮助您找到此问题或让我找到解决方法的所有人。

编辑:上周,我找到了另一种方法来使这项工作。 我没有使用XmlAttributeOverrides,而是创建了一个新类,该类在以XML序列化时可以读取为简单字符串,但带有包含属性的XML标记。 当应用程序进行反射时,我检测到应该这样输出的成员,而不是发出IL以便将其用作字符串,而是发出IL以便将其用作我的新类。

仍然我不会结束这个问题,因为我对了解XmlAttributeOverrides非常感兴趣,并且我很确定你们中的一些人会教给我关于该主题的有用知识。

如果你们中的某些人想要我为自己的文化所做的工作的例子,请告诉我,我将尝试从中创建一个例子,因为我正在编写的代码是我所工作的公司的财产。 。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM