#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>)", "");