用c#生成XML文档
本文关键字:文档 XML 生成 | 更新日期: 2023-09-27 18:11:37
我需要生成一个遵循此规范的XML文档
<productName locale="en_GB">Name</productName>
但是使用xmlserialization,我得到以下
<productName locale="en_GB">
<Name>Name</Name>
</productName>
我的c#代码是这样的:
[Serializable]
public class productName
{
public productName()
{
}
public string Name;
[XmlAttribute]
public string locale;
}
XmlAttribute是在正确的位置显示区域设置所需要的,但是我无法弄清楚如何正确导出Name字段。
有人有什么想法吗?
感谢编辑:这是生成XML 的代码public static class XMLSerialize
{
public static void SerializeToXml<T>(string file, T value)
{
var serializer = new XmlSerializer(typeof(T));
using (var writer = XmlWriter.Create(file))
serializer.Serialize(writer, value);
}
public static T DeserializeFromXML<T>(string file)
{
XmlSerializer deserializer = new XmlSerializer(typeof(T));
TextReader textReader = new StreamReader(file);
T result;
result = (T)deserializer.Deserialize(textReader);
textReader.Close();
return result;
}
}
通过添加[XmlText]属性
将Name指定为文本值而不是指定名称作为元素[XmlText]
public string Value { get; set; }
这不仅包含了对你的问题的直接回答,还包含了对将来如何解决类似问题的间接回答。
从另一种方式开始,用你的xml,写你想要的xml,从那里开始,像这样:
// assuming data.xml contains the xml as you'd like it
> xsd.exe data.xml // will generate data.xsd, ie xsd-descriptor
> xsd.exe data.xsd /classes // will generate data.cs, ie c# classes
> notepad.exe data.cs // have a look at data.cs with your favorite editor
现在看一下data.cs,它将包含大量的属性和东西,并且名称空间可能是错误的,但至少您知道如何解决特定的xml问题。
直接的答案是对给定的属性使用XmlTextAttribute,最好将其命名为Value
,因为这是我迄今为止看到的惯例。
[Serializable]
public class productName {
public productName() { }
[XmlText]
public string Value {get; set;}
[XmlAttribute]
public string locale {get; set;}
}