2011-10-25 79 views
0

我還沒有設法找到答案,這個確切的問題和它的竊聽我。重複元素的XML順序問題

我需要創建一個XML模式,其中重複元素的順序很重要。例如:

<article> 
    <line>This article was</line> 
    <line>written by</line> 
</article> 

我知道上面的例子很有意思,但它說明了我的情況。我必須對執行順序很重要的一系列命令進行反序列化。我可以看到實現此目的的唯一方法是將order="[integer]"屬性添加到每個子元素(上例中的<line>標記)。儘管這似乎有點沉重,特別是當XML文檔將被手動輸入時。有其他選擇嗎?

+2

對於XSD太多了,只需使用XPath查詢文檔並填充對象屬性即可。使用應用程序邏輯(不是XSD)來驗證訂單。 –

+0

我真的不想僅僅依靠XML解析器來確保解析時的順序。我不認爲這是非常安全的。如果沒有更好的解決方案,我將使用 – Clivest

+2

問題中所述的'order'屬性?在解析過程中Order始終保持不變,所有解析器都保留它。它是XML數據模型的重要組成部分。它可能是頂部的其他庫可能不關心,但解析器永遠不會改變順序,也不會像DOM那樣的基本數據模型。 – StaxMan

回答

3

XML規範在XML分析器上的報告要求中非常不完整。例如,它說解析器必須報告空白,但並沒有說它必須報告其他的字符內容。但實際上,您可以依靠XML解析器報告字符內容,並保持字符順序正確,同樣,您可以依靠以正確順序報告的元素。規範沒有強制要求的唯一原因是作者認爲這太明顯,不需要說。你的恐懼是完全沒有根據的。

+0

感謝Michael的澄清。我的團隊過去10年來一直在開發XML應用程序(MSXML,.NET System.Xml),並且從未遇到這些解析器重新解釋文檔順序的問題。 –