LINQ To XML - Как читать этот XML? - PullRequest
0 голосов
/ 17 марта 2011

У меня есть XML-файл, который выглядит следующим образом:

...
<body>

<unit id="1" name ="xxx">
<sourceFile>SomeFile.xml</sourceFile>
<targetFile/>
</unit>

<unit id="2" name ="xxx">
<sourceFile>SomeFile.xml</sourceFile>
<targetFile/>
</unit>

</body>

Может кто-нибудь показать мне, как я использовал бы LINQ to XML через C #, чтобы прочитать значение узла sourceFile и обновить значениеиз targetFile, поскольку я не знаком с LINQ to XML?

Спасибо.

Ответы [ 2 ]

5 голосов
/ 17 марта 2011

Примерно так:

XDocument doc = XDocument.Load("file.xml");
foreach (var sourceNode in doc.Descendants("sourceFile"))
{
    XElement targetNode = sourceNode.Parent.Element("targetFile");
    if (targetNode != null)
    {
        targetNode.Value = sourceNode.Value;
    }
}

В качестве альтернативы:

XDocument doc = XDocument.Load("file.xml");
foreach (var unitNode in doc.Descendants("unit"))
{
    XElement sourceNode = unitNode.Element("sourceFile");
    XElement targetNode = unitNode.Element("targetFile");
    if (sourceNode != null && targetNode != null)
    {
        targetNode.Value = sourceNode.Value;
    }
}

(И позвоните doc.Save впоследствии, если хотите сохранить обратно в файл, конечно, как указано в другом ответе.)

1 голос
/ 17 марта 2011

Чтобы обновить сам файл, вам нужно просто вызвать метод Save () в загруженном документе.

    string path = "yourfile.xml";
    XDocument doc = XDocument.Load(path);
    foreach (XElement unit in doc.Descendants("unit"))
    {
        XElement source = unit.Element("sourceFile");
        XElement target = unit.Element("targetFile");
        target.Value = source.Value;  // or whatever
    }
    doc.Save(path);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...