相关疑难解决方法(0)

使用XmlSerializer创建具有属性和值但没有子元素的元素

希望对于那里的人(可能是一个骗子)来说这应该是一个简单的答案,但我似乎无法弄明白.

我需要输出一个如下所示的元素:

<Quantity foo="AB" bar="CD">37</Quantity>
Run Code Online (Sandbox Code Playgroud)

我知道如何得到这个:

  <Quantity foo="AB" bar="CD">
    <qty>37</qty>
  </Quantity>
Run Code Online (Sandbox Code Playgroud)

包含Quantity类

public int qty;    
[XmlAttribute]
public string foo;

[XmlAttribute]
public string bar;
Run Code Online (Sandbox Code Playgroud)

但当然,无论我插入数量的变量是什么变成它自己的子元素.

另一方面,如果我在父元素中将Quantity作为变量,那么我可以设置值并获取

<Quantity>37</Quantity>
Run Code Online (Sandbox Code Playgroud)

但后来我不知道如何获得属性.

如果没有一个简单的方法来使用XmlSerializer,我会非常惊讶,但我还不知道.有任何想法吗?

c# xmlserializer

23
推荐指数
1
解决办法
1万
查看次数

使用多个元素属性反序列化XML文件 - 属性不反序列化

使用C#.Net 4 - XML示例(真实示例有6个属性)

<TestXML>
  <TestElement attr1="MyAttr" attr2="1" DateAdded="">25</TestElement>
</TestXML>
Run Code Online (Sandbox Code Playgroud)

对于我的班级定义,我有以下内容:

public class TestXML() {
   public TestXML() {}

   public int TestElement {get; set;}
   [XmlAttribute]
   public string attr1 {get; set;}
   [XmlAttribute]
   public string attr2 {get; set;}
   [XmlIgnore]
   public DateTime DateAdded {get; set;}
   [XmlAttribute("DateAdded")]
   public string dateadded {
      get{ return (DateAdded == null ? "" : DateAdded.ToString();}
      set{ if(!value.Equals("")) DateAdded = DateTime.Parse(value);}
   }
}
Run Code Online (Sandbox Code Playgroud)

现在反序列化的代码:

string xml = "<TestXML><TestElement attr1=\"MyAttr\" attr2=\"1\" DateAdded=\"\">26</TestElement></TestXML>"
using (StringReader sr = new StringReader(xml)) {
   XmlSerializer serializer = …
Run Code Online (Sandbox Code Playgroud)

.net c# xml serialization

19
推荐指数
1
解决办法
4万
查看次数

标签 统计

c# ×2

.net ×1

serialization ×1

xml ×1

xmlserializer ×1