Linq считывает XML с помощью тега

#c# #xml #linq

#c# #xml #linq

Вопрос:

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

 <template><body>public DiffSectionType Type<template:br/>{<template:br/><template:tab/>get<template:br/><template:tab/>{<template:br/><template:tab/><template:tab/>return _Type;<template:br/><template:tab/>}<template:br/>}</body></template>
  

Я хотел бы быть более читаемым, например:

 public DiffSectionType Type
{
   get
   {
      return _Type;
   }
}

<template:br/> => new line
<template:tab/> => tab
  

Я могу прочитать основную строку, но не могу поместить ее в правильный формат,
Я пробовал

 var document = XDocument.Load("template.xml");
var body = from element in document.Elements("template").Elements("body")
               select element;
foreach(var v in body)
{
  Console.WriteLine(v.Value);
}
  

Комментарии:

1. Можете ли вы использовать <![CDATA[]]> ? Но даже в этом случае я бы не стал использовать строки для анализа xml. Цель XML — определить структуру с использованием элементов, а не строк.

2. Это html, а не xml.

Ответ №1:

Вы могли бы использовать регулярное выражение для решения этой проблемы, поэтому что-то вроде этого:

         string str = @"<template><body>public DiffSectionType Type<template:br/>{<template:br/><template:tab/>get<template:br/><template:tab/>{<template:br/><template:tab/><template:tab/>return _Type;<template:br/><template:tab/>}<template:br/>}</body></template>";
        str = Regex.Replace(str, "<template:brx2F>", Environment.NewLine);
        str = Regex.Replace(str, "<template:tabx2F>", "t");
        str = Regex.Replace(str, "(<x2Ftemplate>)|(<template>)", "");
        str = Regex.Replace(str, "(<x2Fbody>)|(<body>)", "");