簡體   English   中英

c#XML和LINQ

[英]c# XML and LINQ

我有一個XML文檔,看起來像這樣:

<people>
  <person>
    <name>mike</name>
    <address>1 main st</address>
    <jobTitle>SE</jobTitme>
       <children>
           <name>mary</name>
           <age>5</age>
       </childres> 
  </person>
  <person>
    <name>john</name>
    <address>2 main st</address>
    <jobTitle>SE</jobTitme>
  </person>
</people>`

所以並非所有人阻擋和兒童阻擋。 很簡單。 當我通過C#向XML添加一個新人時,我正在編寫一個帶有person對象的函數,該person對象有一個子對象的集合(可能是0或更多)。 我在該函數中編寫linq時遇到問題。 我可以輕松添加一個人物,但有條件地添加一個或多個孩子是很難的。 這是我到目前為止:

    doc.Element("People").Add(
            new XElement("Person", 
                new XElement("Name", person.name),
                new XElement("Address", person.address),
                new XElement("jobTitle", person.jobTitle)))

我如何有條件地添加孩子?

public class person { public List<Child> childList; public string name; public string address; public string jobTitle }

public class child { public string name; public int age; }

我如何有條件地添加孩子?

三種選擇:

  • XElement調用中使用null參數; 那將被忽略
  • 傳遞一系列空洞的孩子; 再次,這將是無關緊要的
  • 構建元素的其余部分,然后有條件地調用Add

如果沒有看到Person類型的代碼,很難給出更具體的建議。

(順便說一句,看起來你的元素實際上應該是child而不是孩子,假設你每個孩子有一個元素...)

編輯:現在我們可以看到你的代碼,看起來你只是想要:

doc.Element("People").Add(
        new XElement("Person", 
            new XElement("Name", person.name),
            new XElement("jobTitle", job.title),
            person.children.Select(c => new XElement("children",
                new XElement("Name", c.name),
                new XElement("Age", c.age)))));

請注意,當涉及元素名稱時,您目前與大寫字母非常不一致,並且公開這樣的公共字段也是一個壞主意。

暫無
暫無

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

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