C# 在c中反序列化xml文件时为标记添加属性#
我的xml有属性。如何声明这些变量以进行反序列化。 xml如下所示C# 在c中反序列化xml文件时为标记添加属性#,c#,xml,deserialization,C#,Xml,Deserialization,我的xml有属性。如何声明这些变量以进行反序列化。 xml如下所示 <LabelRequest Test="NO" LabelType="DEFAULT" LabelSubtype="NONE" LabelSize="4x6" ImageFormat="PNG"> <MailpieceShape>FLAT</MailpieceShape> <Services Open="On" /> <Options mail="off" />
<LabelRequest Test="NO" LabelType="DEFAULT" LabelSubtype="NONE" LabelSize="4x6" ImageFormat="PNG">
<MailpieceShape>FLAT</MailpieceShape>
<Services Open="On" />
<Options mail="off" />
</LabelRequest>
但是它显示的Xml文档中好像有错误。我应该如何声明属性?您的类应该是这样的:
public class LabelRequest
{
[XmlAttribute]
public string Test { get; set; }
[XmlAttribute]
public string LabelType { get; set; }
[XmlAttribute]
public string LabelSubtype { get; set; }
[XmlAttribute]
public string LabelSize { get; set; }
[XmlAttribute]
public string ImageFormat { get; set; }
public string MailpieceShape { get; set; }
public Services Services { get; set; }
public Options Options { get; set; }
}
public class Services
{
public string Open { get; set; }
}
public class Options
{
public string mail { get; set; }
}
你的班级应该是这样的:
public class LabelRequest
{
[XmlAttribute]
public string Test { get; set; }
[XmlAttribute]
public string LabelType { get; set; }
[XmlAttribute]
public string LabelSubtype { get; set; }
[XmlAttribute]
public string LabelSize { get; set; }
[XmlAttribute]
public string ImageFormat { get; set; }
public string MailpieceShape { get; set; }
public Services Services { get; set; }
public Options Options { get; set; }
}
public class Services
{
public string Open { get; set; }
}
public class Options
{
public string mail { get; set; }
}
这是工作100%。我刚刚将
mail
属性更改为mail
,因此属性的命名转换是正确的
class Program
{
static void Main()
{
Requester objectToDeserialize;
using (Stream stream = File.Open("file.xml", FileMode.Open))
{
XmlSerializer deserializer = new XmlSerializer(typeof(Requester));
objectToDeserialize = (Requester)deserializer.Deserialize(stream);
}
Console.WriteLine(objectToDeserialize.Test);
Console.WriteLine(objectToDeserialize.LabelType);
Console.WriteLine(objectToDeserialize.LabelSubtype);
Console.WriteLine(objectToDeserialize.LabelSize);
Console.WriteLine(objectToDeserialize.ImageFormat);
Console.WriteLine(objectToDeserialize.MailpieceShape);
Console.WriteLine(objectToDeserialize.Services.Open);
Console.WriteLine(objectToDeserialize.Options.Mail);
Console.ReadLine();
}
}
[XmlRoot(ElementName = "LabelRequest")]
public class Requester
{
[XmlAttribute]
public string Test { get; set; }
[XmlAttribute]
public string LabelType { get; set; }
[XmlAttribute]
public string LabelSubtype { get; set; }
[XmlAttribute]
public string LabelSize { get; set; }
[XmlAttribute]
public string ImageFormat { get; set; }
public string MailpieceShape { get; set; }
public Services Services { get; set; }
public Options Options { get; set; }
}
public class Services
{
[XmlAttribute]
public string Open { get; set; }
}
public class Options
{
[XmlAttribute]
public string Mail { get; set; }
}
本例中的XML:
<?xml version="1.0" encoding="utf-8" ?>
<LabelRequest Test="NO" LabelType="DEFAULT" LabelSubtype="NONE" LabelSize="4x6" ImageFormat="PNG">
<MailpieceShape>FLAT</MailpieceShape>
<Services Open="On" />
<Options Mail="off" />
</LabelRequest>
平的
这是100%有效。我刚刚将mail
属性更改为mail
,因此属性的命名转换是正确的
class Program
{
static void Main()
{
Requester objectToDeserialize;
using (Stream stream = File.Open("file.xml", FileMode.Open))
{
XmlSerializer deserializer = new XmlSerializer(typeof(Requester));
objectToDeserialize = (Requester)deserializer.Deserialize(stream);
}
Console.WriteLine(objectToDeserialize.Test);
Console.WriteLine(objectToDeserialize.LabelType);
Console.WriteLine(objectToDeserialize.LabelSubtype);
Console.WriteLine(objectToDeserialize.LabelSize);
Console.WriteLine(objectToDeserialize.ImageFormat);
Console.WriteLine(objectToDeserialize.MailpieceShape);
Console.WriteLine(objectToDeserialize.Services.Open);
Console.WriteLine(objectToDeserialize.Options.Mail);
Console.ReadLine();
}
}
[XmlRoot(ElementName = "LabelRequest")]
public class Requester
{
[XmlAttribute]
public string Test { get; set; }
[XmlAttribute]
public string LabelType { get; set; }
[XmlAttribute]
public string LabelSubtype { get; set; }
[XmlAttribute]
public string LabelSize { get; set; }
[XmlAttribute]
public string ImageFormat { get; set; }
public string MailpieceShape { get; set; }
public Services Services { get; set; }
public Options Options { get; set; }
}
public class Services
{
[XmlAttribute]
public string Open { get; set; }
}
public class Options
{
[XmlAttribute]
public string Mail { get; set; }
}
本例中的XML:
<?xml version="1.0" encoding="utf-8" ?>
<LabelRequest Test="NO" LabelType="DEFAULT" LabelSubtype="NONE" LabelSize="4x6" ImageFormat="PNG">
<MailpieceShape>FLAT</MailpieceShape>
<Services Open="On" />
<Options Mail="off" />
</LabelRequest>
平的
什么是错误消息?没有属性,它工作正常。但是我添加属性,它显示错误-“XML文档(1,2)中有错误”什么是错误消息?没有属性,它工作正常。但是我添加属性,它显示错误-“XML文档(1,2)中有错误”是的,好的。如果有这样的xml,我必须做什么。请看我的编辑question@sindhujampani,对于复杂节点,您需要声明新类。你可以看这里,这篇文章是完整的答案更新是的,好的。如果有这样的xml,我该怎么做。请看一下我的编辑question@sindhujampani,对于复杂节点,您需要声明新类。你可以看看这里,这篇文章是非常完整的答案更新,我得到的是open和mail的值,这是null不能得到的。在粘贴到这里之前,我在我的电脑上测试了这段代码。我得到的open和mail的值不能为null。在粘贴到这里之前,我在我的电脑上测试了这段代码。