【问题标题】:insert xml tag with c#用c#插入xml标签
【发布时间】:2017-06-26 08:38:54
【问题描述】:

我正在尝试在现有的 xml 文件中插入一个 XML 标记。在 C# 中插入 XML-Tag 并不是一个真正的问题,但我的问题是,我需要在该文件的某个位置添加新的开始标签和结束标签......谁能帮助我......

这里是一个例子:

这是之前的xml文件:

<?xml version="1.0" standalone="yes"?>
<DocumentElement>
  <Item>
    <ItemID>2711</ItemID>
    <ItemTypeID>P</ItemTypeID>
    <ColorID>1</ColorID>
  </Item>
  <Item>
    <ItemID>64566</ItemID>
    <ItemTypeID>P</ItemTypeID>
    <ColorID>3</ColorID>
  </Item>
</DocumentElement>

...这应该是新的 XML 文件 -> 带有新标签“Inventory”:

<?xml version="1.0" standalone="yes"?>
<DocumentElement>
  <Inventory>  
  <Item>
    <ItemID>2711</ItemID>
    <ItemTypeID>P</ItemTypeID>
    <ColorID>1</ColorID>
  </Item>
  <Item>
    <ItemID>64566</ItemID>
    <ItemTypeID>P</ItemTypeID>
    <ColorID>3</ColorID>
  </Item>
  </Inventory>
</DocumentElement>

有人可以帮帮我吗?

【问题讨论】:

  • 如果您阅读文件,将Item标签保存到列表中,创建一个新的XmlDocument,打开Inventory标签,将列表中的项目添加到标签中,然后关闭它,这可能是最简单的然后保存文档。

标签: c# xml insert tags


【解决方案1】:

您可以将现有的Items 包装在一个新的XElement 中,然后替换原始文档上的节点:

XDocument doc = XDocument.Parse("<DocumentElement><Item><ItemID>2711</ItemID><ItemTypeID>P</ItemTypeID><ColorID>1</ColorID></Item><Item><ItemID>64566</ItemID><ItemTypeID>P</ItemTypeID><ColorID>3</ColorID></Item></DocumentElement>");
var items = doc.Descendants("Item");
XElement inventory = new XElement("Inventory");
inventory.Add(items);
doc.Root.ReplaceNodes(inventory);
//now you can save the XDocument to a file or whatever

创建这个:

<DocumentElement>
  <Inventory>
    <Item>
      <ItemID>2711</ItemID>
      <ItemTypeID>P</ItemTypeID>
      <ColorID>1</ColorID>
    </Item>
    <Item>
      <ItemID>64566</ItemID>
      <ItemTypeID>P</ItemTypeID>
      <ColorID>3</ColorID>
    </Item>
  </Inventory>
</DocumentElement>

如果你有 LINQPad,你可以运行这个脚本:http://share.linqpad.net/7c636x.linq

【讨论】:

    【解决方案2】:

    你可以试试这个

    var doc = XDocument.Load(file);
                    var characters = doc.Descendants("DocumentElement").FirstOrDefault();
                    if (characters != null)
                    {
                        XElement xe = new XElement("Inventory");
                        characters.Add(xe);
                        var oColl = doc.Descendants("Item");
                        xe.Add(oColl);                   
                    }
                    doc.Save(file);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-20
      • 1970-01-01
      • 1970-01-01
      • 2010-09-06
      • 2019-10-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多