它的数据结构有明显的XML异常

时间:2016-06-10 08:06:30

标签: c# xml

我发现了一种我无法理解的XML情况。设备正在向我发送一个包含以下内容的xml结构:

<element>
2
<subelement>1</subelement>
</element>

这个XML是有效的,在几个在线验证器上检查过,但是对我来说没有意义。我不知道如何将其映射到c#中的强类型对象或如何解释它。 我试图找到关于这个或其他一些例子的文档,但没有运气。

任何人都能解释一下吗?提供某些文档的链接?

3 个答案:

答案 0 :(得分:1)

它确实是格式良好的XML。

在子节点中同时包含子元素和文本节点的元素称为&#34;混合内容&#34;。混合内容通常用于这样的文档结构:

class Order
  include Mongoid::Document
  belongs_to :customer, autosave: false
  validates_presence_of :customer
end

但当然你可以用任何你喜欢的方式使用它。

至于它意味着什么,只有设计它的人可以告诉你。

在传统编程语言中表示混合内容很棘手,这就是为什么使用专为处理XML而设计的语言(如XSLT和XQuery)的一大优势。我们无法真正说明如何在不知道可能出现在输入中的所有结构范围的情况下如何表示此特定实例。如果输入始终是单个数字后跟单个元素,那么您将需要与任意数量的元素和任意数量的数字的情况不同的表示。

答案 1 :(得分:1)

您可以将此xml映射到此类

[XmlRoot("element")]
public class Element
{
    [XmlText]
    public string Text { get; set; }

    [XmlElement("subelement")]
    public string Subelement { get; set; }
}

XmlTextAttribute表示该成员必须被视为XML文本。

答案 2 :(得分:0)

至于有效性,我不确定,因为我认为看起来无效,因为它在块范围内定义了两个元素。

但是为了在对象模型中表示它,如果我需要处理它/解析它,我会做这样的事情:

class Element {
    private int value; 
    private Element[] subelement;
    //...


}