我希望这应该是非常简单的。我正在尝试设置" xml:lang" .NET C#中使用XmlSerializer的XML元素的属性。无论我做什么,我都无法得到" xml:lang"显示值为" en-US"。
我对XML序列化相当陌生,但我已经把其他所有内容都弄清楚了。此XML文件将在美国境外使用,定义语言非常重要。我的代码中的示例如下。这段代码给了我一个错误(我在其他地方定义了命名空间):
"全球XML项目' lang'从命名空间 ' http://www.w3.org/XML/1998/namespace'具有不匹配的默认值 属性:''和' en-US'并且无法映射到同一模式 项目。使用XML属性为其指定另一个XML名称或命名空间 其中一项,或确保默认值匹配。"
public class LongDescription
{
[XmlAttribute("xml:lang", DataType = "language")]
public string attrLang { get; set; }
public LongDescription()
{
attrLang = "en-US";
}
}
我在XmlSerializer文档中发现" xml:lang"是一种特殊情况,必须设置为"默认"或"保留"。如果我使用这些值,它会被填充,但是文字字符串"默认"或者"保存"而不是" en-US"我需要。
我假设有一些关于xml:lang的特殊规则我不知道但我还没有找到任何文档告诉我我错过了什么(即使在StackOverflow上)。