Сохранение строковой переменной xml in c# - PullRequest
0 голосов
/ 12 февраля 2020
string content = ....

У меня есть XML содержимое, хранящееся в строке, как показано в переменной выше. Сохраненный контент похож на ниже,

<?xml version="1.0"?>
<model xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Items>
    <ItemModel xsi:type="TypeKeep">
      <Name>Name01</Name>
    </ItemModel>
    <ItemModel xsi:type="TypeDelete">
      <Name>Name02</Name>
    </ItemModel>
    <ItemModel xsi:type="TypeDelete">
      <Name>Name03</Name>
    </ItemModel>
  </Items>
</model>

Здесь я хочу удалить все элементы, которые имеют type = "TypeDelete". В том смысле, что я пытаюсь изменить переменную содержимого, удалив элементы TypeDelete

Есть идеи, как мне этого добиться?

Ответы [ 2 ]

2 голосов
/ 12 февраля 2020

Использование xml linq:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
using System.IO;


namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            string xml = File.ReadAllText(FILENAME);
            XDocument doc = XDocument.Parse(xml);
            XNamespace xsiNs = doc.Root.GetNamespaceOfPrefix("xsi");

            List<XElement> removeNodes = doc.Descendants("ItemModel").Where(x => (string)x.Attribute(xsiNs + "type") == "TypeDelete").ToList();

            for (int i = removeNodes.Count - 1; i >= 0; i--)
            {
                removeNodes[i].Remove();
            }

        }
    }

}
0 голосов
/ 12 февраля 2020

Если вы хотите удалить указанный узел c XML из файла XML напрямую, вы можете go по этой ссылке и попробовать это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...