从一个XElement中提取两个节点并创建一个新的XElement

时间:2014-05-31 00:03:59

标签: c# asp.net .net xml asp.net-mvc

我想从XElement中提取两个节点并使用这两个提取节点创建一个新的XElement,我的XElement,名为addTree,如下所示:

<add>
  <channel_texting_id>7759101659683854745</channel_texting_id> 
  <account_id>1229782938247303441</account_id> 
  <channel_id>3922635293764895812</channel_id> 
  <texting_id>1</texting_id> 
  <is_active>true</is_active> 
  </add>

我想创建一个新的XElement:

<channel_texting_id>7759101659683854745</channel_texting_id> <channel_id>3922635293764895812</channel_id> 

我可以得到第一个节点,channel_texting_id:

var addTreeOnlyDataINeed = n1.FirstNode as XElement;

现在我想将XElement addTree中的channel_id添加到XElement addTreeOnlyDataINeed但我不知道如何在XElement addTree中按名称选择channel_id节点,一旦我得到它如何添加,完全完整且与channel_texting_id处于同一级别在XElement中添加addTreeOnlyDataINeed

2 个答案:

答案 0 :(得分:1)

我认为你需要这样的东西:

var parsed = XElement.Parse('here your xml as string');

var addTree = new XElement("addTree",
    new XElement("channel_texting_id", parsed.Element("channel_texting_id").Value),
    new XElement("channel_id", parsed.Element("channel_id").Value));

答案 1 :(得分:0)

您无法在单个XEelement变量中存储多个XML元素。您可以改为使用XElement的集合,例如使用List<T>

var addTreeOnlyDataINeed = new List<XElement>();
addTreeOnlyDataINeed.Add(n1.FirstNode as XElement);
//this is how you get child element by name
addTreeOnlyDataINeed.Add(n1.Element("channel_id"));