簡體   English   中英

C#中的XmlElement

[英]XmlElement in C#

我在C#中有一個簡單的類,我已經設置了使用XmlSerializer類序列化為XML。

[Serializable, XmlRoot("dc", Namespace= dc.NS_DC)]
public class DCItem {

    // books??

    [XmlElement("title")]
    public string Title { get; set; }

}

DCItem序列化很好,因為代碼現在正在設置(如上所示); 但是,我想更改屬性“Title”,以便它包含在“Books”節點中。 例如:

<dc>
  <books>
    <title>Joe's Place</title>
  </books>
</dc>

這樣做的最佳方法是什么?

您可以定義Books類:

public class Books
{
    [XmlElement("title")]
    public string Title { get; set; }
}

接着:

[XmlRoot("dc", Namespace= dc.NS_DC)]
public class DCItem 
{
    [XmlElement("books")]
    public Books Books { get; set; }
}

另請注意,我已經擺脫了二進制序列化程序使用的Serializable屬性,並被XmlSerializer類完全忽略。

既然我懷疑你可以有多本書:

<dc>
  <books>
    <title>Joe's Place</title>
    <title>second book</title>
    <title>third book</title>
  </books>
</dc>

您可以調整對象模型以匹配此結構:

[XmlRoot("dc", Namespace= dc.NS_DC)]
public class DCItem
{
    [XmlElement("books")]
    public Books Books { get; set; }
}

public class Books
{
    [XmlElement("title")]
    public Book[] Items { get; set; }
}

public class Book
{
    [XmlText]
    public string Title { get; set; }
}

我假設你想要<books>下的幾個<title> <books> 那么這是一種方法:

[XmlType("title")]
public class Title 
{
    [XmlText]
    public string Text { get; set; }
}

[XmlRoot("dc")]
public class DCItem 
{
    [XmlArray("books")]
    public List<Title> Books { get; set; }
}

您可能希望使用<book>元素,並將title作為屬性或元素放在<book>

最簡單的方法是制作包含title屬性的books類。

public class booksType
{
    public string title {get;set;}
}

並且在主類中用作書籍屬性的類型。

public booksType books {get;set;}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM