[英]Add Xml Attribute to string property
我有一个自定义对象,它有一个名为'Name'的字符串属性我想保持序列化生成的XML相同,但是为名为'NiceName'的元素添加一个属性,其值为'Full name'。
这就是我目前的情况:
<TheObject>
<Name>mr nobody</Name>
</TheObject>
这就是我想要产生的:
<TheObject>
<Name NiceName='Full name'>mr nobody</Name>
</TheObject>
我只需要一些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; }
}
}
输出将是
<XmlDocRoot>
<Description id="1">text</Description>
如果您定义另一种类型,则可能如下所示:
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);
会产生
<?xml version="1.0"?>
<Person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Name NiceName="Nobody">Ali Kheyrollahi</Name>
<FullName>Ali Kheyrollahi</FullName>
</Person>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.