在visual中使用xml到c#特性将下面的xml标记转换为C#类。
<books>
<book name="Book-1">
<author>
<name>Author-1<ref>1</ref></name>
</author>
</book>
<book name="Book-2">
<author>
<name>Author-1<ref>1</ref></name>
</author>
</book>
</books>转换后的类包含
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class booksBookAuthorName
{
private byte refField; // 1
private string[] textField; // 2我们需要的是Author-1<ref>1</ref>作为读取作者名称时的输出,方法是保留标记。
我们已经尝试过https://msdn.microsoft.com/en-us/library/system.xml.serialization.xmltextattribute(v=vs.110).aspx属性。但没有希望。
有什么线索吗?
发布于 2016-11-21 08:23:43
您可以使用[XmlAnyElement("name")]将每个作者的<name>节点的XML捕获为XmlElement (或XElement)。您想要的确切文本是该元素的InnerXml:
[XmlRoot(ElementName = "author")]
public class Author
{
[XmlAnyElement("name")]
public XmlElement NameElement { get; set; }
[XmlIgnore]
public string Name
{
get
{
return NameElement == null ? null : NameElement.InnerXml;
}
set
{
if (value == null)
NameElement = null;
else
{
var element = new XmlDocument().CreateElement("name");
element.InnerXml = value;
NameElement = element;
}
}
}
}这就消除了对booksBookAuthorName类的需求。
示例小提琴显示了与您的XML对应的一组完整类的反序列化,这些类最初是从http://xmltocsharp.azurewebsites.net/生成的,之后根据需要对Author进行了修改。
https://stackoverflow.com/questions/40715261
复制相似问题