2016-06-10 80 views
0

我發現了一個我無法理解的XML情況。一種設備是給我一個包含這樣的XML結構:Aparent XML異常對其數據結構

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

此XML是有效的,但是因爲幾個在線驗證檢查,它沒有道理給我。我不知道如何將其映射到c#中的強類型對象或如何解釋它。 我試圖找到關於這個或其他一些例子的文檔,但沒有運氣。

任何人都可以解釋這一點嗎?提供一些鏈接到一些文檔?

回答

1

那麼它肯定是格式良好的XML。

在其子項中同時具有子元素和文本節點的元素稱爲「混合內容」。混合內容通常用於這樣的文檔結構:

<p>This is <b>important</b></p> 

但當然,您可以使用任何您喜歡的方式。

至於什麼意思,只有設計它的人可以告訴你。在傳統編程語言中表示混合內容非常棘手,這就是爲什麼使用爲處理XML而設計的語言(如XSLT和XQuery)有很大的優勢。我們無法確切知道如何在不知道可能出現在輸入中的全部結構的情況下如何表示這個特定實例。如果輸入始終是單個數字,然後是單個元素,那麼您將需要一個不同的表示形式,以任意順序包含任意數量的元素和任意數量的數字。

0

至於有效性,我不確定,因爲我認爲這看起來無效,因爲它定義了塊範圍內的兩個元素。

但對於一個對象模型表示的話,我會做這樣的事情,如果我需要在它的工作/解析它:

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


} 
1

可以將此XML映射到這個類

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

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

XmlTextAttribute指示成員必須以XML文本處理。