Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
661 views
in Technique[技术] by (71.8m points)

c# - Add Xml Attribute to string property

I have a custom object which has a string property called 'Name' I'd like to keep the XML generated by serialization the same but add an attribute to the element called 'NiceName' with a value of 'Full name'.

This is what i have currently:

<TheObject>
  <Name>mr nobody</Name>
</TheObject>

This is what i would like to generate:

<TheObject>
  <Name NiceName='Full name'>mr nobody</Name>
</TheObject>

I only need this for some XSLT so i don't want to change the way the class works if possible. I.E. Changing name from string to a custom class. All objects will have the same attribute it will never change it is going to be totally read only.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You can use a combination of XMLAttribute and XmlText()

take below example of class declaration:

    public class Description {
    private int attribute_id;
    private string element_text;

    [XmlAttribute("id")]
    public int Id {
        get { return attribute_id; }
        set { attribute_id = value; }
    }

    [XmlText()]
    public string Text {
        get { return element_text; }
        set { element_text = value; }
    }
}

The output will be

<XmlDocRoot>
<Description id="1">text</Description>


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...