删除XML属性的一部分
本文关键字:一部分 属性 XML 删除 | 更新日期: 2023-09-27 18:12:05
我正在解析一个XML文档,并通过Microsoft Lightswitch应用程序将其内容保存到一个简单的数据库中。XML文档包含一些用户帐户,并具有以下标记:
<Data Account="i:0#.w|ab001'cn0ied32" Access="0" />
<Data Account="i:0#.w|ab001'cn0ied50" Access="0" />
<Data Account="i:0#.w|ab001'cn0ied56" Access="0" />
<Data Account="i:0#.w|ab001'cn0iit01" Access="0" />
<Data Account="i:0#.w|ab001'cn0iit05" Access="0" />
我想保存帐户没有 I:0#。w|在域和用户名前。因此,处理后应该只得到域名。
这是我的班级:
public class MessageInterpreter
{
[XmlRoot("Root", IsNullable = false)]
[Serializable]
public class Root
{
[XmlElement("Data")]
public Data[] Data{ get; set; }
[Serializable]
public class Data
{
public Data()
{
//Access = false;
}
[XmlIgnore]
public String Account_Nullable { get; set; }
[XmlAttribute]
public String Account { get { return Account.Replace("i:0#.w|", String.Empty); } set { Account_Nullable = value; } }
[XmlIgnore]
public bool? Access_Nullable { get; set; }
[XmlAttribute]
public bool Access { get { return Access_Nullable.GetValueOrDefault(); } set { Access_Nullable = value; } }
}
}
private static XmlSerializer _Serializer;
static MessageInterpreter()
{
_Serializer = new XmlSerializer(typeof(Root));
}
public MessageInterpreter()
{
}
public Root ParseMessage(String message)
{
if (String.IsNullOrEmpty(message))
return null;
using (var stream = new StringReader(message))
{
try
{
return (Root)_Serializer.Deserialize(stream);
}
catch (Exception)
{
return null;
}
}
}
现在当我尝试导入它时,我得到一个堆栈溢出异常…我不知道为什么。有什么办法吗?或者推荐什么可以使用/不可以使用?
您的Account getter似乎访问了您的Account属性,这会导致无限循环。试试这个:
public String Account { get { return Account_Nullable.Replace("i:0#.w|", String.Empty); } set { Account_Nullable = value; } }
查看您的Account
属性:
public String Account { get { return Account.Replace("i:0#.w|", String.Empty); }
的递归……因此栈溢出。鉴于你的setter,我怀疑你指的是
public String Account { get { return Account_Nullable.Replace("i:0#.w|", String.Empty); }
无可否认,这可能不是我要做的-我将以相当透明的方式加载/保存数据,然后显式适当地修改Account
值。但是嘿…