用于分析的XML类

本文关键字:XML 用于 | 更新日期: 2023-09-27 18:27:34

我有XML结构的类模型,我想在其中解析XML。我使用XSD生成器。一切都会好起来的,但有两件事不起作用。

首先:我在xml:中有类似的东西

<protocol>
<!-- an error message which may appear from both sides as a response anytime.-->
<message type="error">
some string
</message>
...
</protocol>

我从xsd生成器获得的类集在我的消息类中没有任何字段,我可以在其中获得一些字符串。我必须为我在该类中创建的字段分配什么属性:(字符串消息)才能获得这个值?

第二:我在xml:中有类似的东西

<message type="gameState">
<gameId id="zxcc"/>
<!-- one tag of the two below appears in message -->
<nextPlayer nick="asdd"/>
<gameOver>
<!-- this tag appears repeatedly for all the players -->
<player nick="zxc" result="winner"/>
</gameOver>
<!-- this tag will always appear. Not read by the server.-->
<gameState>
</gameState>
</message>

生成器在消息类中为gameOver:创建

/// <remarks/>
    [System.Xml.Serialization.XmlArrayAttribute("gameOver", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
    [System.Xml.Serialization.XmlArrayItemAttribute("player", typeof(player), IsNullable=false)]
    public player[][] gameOver {
        get {
            return this.gameOverField;
        }
        set {
            this.gameOverField = value;
        }
    }

我得到了一个例外:

Unable to generate a temporary class (result=1).
error CS0030: Cannot convert type 'player[]' to 'player'
error CS0029: Cannot implicitly convert type 'player' to 'player[]'

播放器是生成器定义的类,它在其他属性中工作。我发现这个片段xml是我有3度的唯一复杂节点。

我该怎么解决这个问题?

用于分析的XML类

好的。我找到了解决第一个问题的办法。

我不得不添加

[XmlText]
public string Value { get; set; }

到我的Message类,以便在<message></message>中序列化为it文本,但我找不到第二个问题的解决方案。有什么想法吗?