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 で<ID>1</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: また、すべての選択ノードには Nom ノードが含まれています
。 注 3: 必要な場合は、XML 全体を保存する必要があります。

于 2012-09-12T09:37:50.007 に答える