2

这是我的 XML:

  <?xml version="1.0" encoding="utf-8" ?>
   <Selection>
    <ID>1</ID>
    <Nom>Name 1</Nom>
    <DateReference>0</DateReference>
    <PrefixeMedia>Department</PrefixeMedia>
    <FormatExport>1630</FormatExport>
    <TraceAuto>Oui</TraceAuto>
    <SubID></SubID>
  </Selection>
  <Selection>
    <ID>2</ID>
    <Nom>Name 1</Nom>
    <DateReference>0</DateReference>
    <PrefixeMedia>Department</PrefixeMedia>
    <FormatExport>1630</FormatExport>
    <TraceAuto>1</TraceAuto>
    <SubID>1</SubID>
  </Selection>

我的问题是我想修改例如其中的节点内容<Nom>Name 1</Nom><Selection></Selection><ID>1</ID>ID 搜索)

我正在使用 XElement 和 XDocument 进行简单的搜索,但我需要一些帮助来解决上述问题。(SilverLight 上的开发

最好的祝福。

4

2 回答 2

1

另一种方法是使用XmlDocument

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(@"\path\to\file.xml");

// Select the <nom> node under the <Selection> node which has <ID> of '1'
XmlNode name = xmlDoc.SelectSingleNode("/Selection[ID='1']/Nom");

// Modify the value of the node
name.InnerText = "New Name 1";

// Save the XML document 
xmlDoc.Save(@"\path\to\file.xml");
于 2013-09-27T20:19:08.710 回答
0

如果您不知道如何获取<Nom>要更新的正确节点,诀窍是首先选择一个包含正确节点的<Selection>节点,然后您可以获得该节点。<ID><Nom>

就像是:

XElement tree = <your XML>;
XElement selection = tree.Descendants("Selection")
      .Where(n => n.Descendants("ID").First().Value == "1") // search for <ID>1</ID>
      .FirstOrDefault();
if (selection != null)
{
  XElement nom = selection.Descendants("Nom").First();
  nom.Value = "Name one";
}

注 1:通过使用Descendants("ID").First(),我希望每个选择节点都包含一个 ID 节点。
注 2:每个 Selection 节点都包含一个 Nom 节点
注 3:现在您仍然必须存储整个 XML,如果您需要的话。

于 2012-09-12T09:37:50.007 回答