将Xml属性添加到字符串属性
我有一个自定义对象,它有一个名为’Name’的字符串属性我想保持序列化生成的XML相同,但是为名为’NiceName’的元素添加一个属性,其值为’Full name’。
这就是我目前所拥有的:
mr nobody
这就是我想要产生的:
mr nobody
我只需要一些XSLT,所以我不想改变类的工作方式,如果可能的话。 IE将名称从字符串更改为自定义类。 所有对象都具有相同的属性,它永远不会改变它将完全只读。
您可以使用XMLAttribute和XmlText()的组合
以下是类声明的示例:
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; } } }
输出将是
text
如果您定义另一种类型,则可以如下所示:
public class Person { private string _name; [XmlIgnore] public string Name { get { return _name; } set { _name = value; ThePersonName = new PersonName() { Name = FullName, NiceName = _name }; } } [XmlElement(ElementName = "Name")] public PersonName ThePersonName { get; set; } public string FullName { get; set; } } public class PersonName { [XmlAttribute] public string NiceName { get; set; } [XmlText] public string Name { get; set; } }
运用
XmlSerializer s = new XmlSerializer(typeof(Person)); Person ali = new Person(); ali.FullName = "Ali Kheyrollahi"; ali.Name = "Nobody"; s.Serialize(new FileStream("ali.xml",FileMode.Create), ali);
会产生
Ali Kheyrollahi Ali Kheyrollahi