Мне нужно удалить все содержимое между этими 2 и включая их.Как удалить содержимое из двух строк из документа xml
Я попытался с помощью этого
newLines = RemoveLines(newLines, "<!-- ENHANCED -->", "<!-- /ENHANCED -->", true);
private static List<string> RemoveLines(List<string> newLines, string startingLine, string endingLine, bool removeContents)
{
for (var i = 0; i < newLines.Count(); i++)
{
if (newLines[i].Trim() != startingLine.Trim()) continue;
newLines.RemoveAt(i);
if (removeContents)
for (var j = i; newLines[j].Trim() != endingLine.Trim(); j++)
{
newLines.RemoveAt(j);
j--;
}
newLines.RemoveAt(i);
}
return newLines;
}
, но это не работает Whe появляются обе строки в одной строке.
Я также попытался использовать xdocument.
var xdoc = XDocument.Load(file, LoadOptions.PreserveWhitespace);
var nodes = xdoc.DescendantNodes();
var newNodes = RemoveNodes(nodes, "<!-- ENHANCED -->", "<!-- /ENHANCED -->", true);
var doc = new XDocument(newNodes);
doc.Save(file);
private static IEnumerable<XNode> RemoveNodes(IEnumerable<XNode> nodes, string startingNode, string endingNode, bool removeBetweenNodes)
{
var xNodes = nodes as IList<XNode> ?? nodes.ToList();
for (var i = 0; i < xNodes.Count(); i++)
{
if (xNodes[i].ToString().Trim() != startingNode.Trim()) continue;
xNodes.RemoveAt(i);
if (removeBetweenNodes)
for (var j = i; xNodes[j].ToString().Trim() != endingNode.Trim(); j++)
{
xNodes.RemoveAt(j);
j--;
}
xNodes.RemoveAt(i);
}
return (IEnumerable<XNode>) xNodes;
}
Это не удается из-за того, что в папке отсутствуют указанные файлы .dtd.
Это можно сделать с чтением в поток, а затем применить регулярное выражение. Я не очень хорошо разбираюсь в регулярном выражении. Может кто-нибудь помочь?
У вас есть образец для этого файла? –
есть. У меня есть –
Не забудьте добавить его в свой вопрос? –