Я пытаюсь использовать Regex в C #, чтобы сопоставить раздел в XML-документе и обернуть этот раздел внутри тега.
Например, у меня есть такой раздел:
<intro>
<p>this is the first section of content</p>
<p> this is another</p>
</intro>
И я хочу, чтобы это выглядело так:
<intro>
<bodyText>
<p> this is asdf</p>
<p> yada yada </p>
</bodyText>
</intro>
Есть идеи?
Я подумывал сделать это с помощью класса XPath в C # или просто прочитав документ и используя Regex. Я просто не могу понять это в любом случае.
Вот одна попытка:
StreamReader reader = new StreamReader(filePath);
string content = reader.ReadToEnd();
reader.Close();
/* The regex stuff would go here */
StreamWriter writer = new StreamWriter(filePath);
writer.Write(content);
writer.Close();
}
Благодарность!
2 ответа
Я бы не рекомендовал регулярные выражения для этой задачи. Вместо этого вы можете сделать это с помощью LINQ to XML. Например, вот как можно обернуть некоторые теги внутри нового тега:
XDocument doc = XDocument.Load("input.xml");
var section = doc.Root.Elements("p");
doc.Root.ReplaceAll(new XElement("bodyText", section));
Console.WriteLine(doc.ToString());
Результат:
<intro>
<bodyText>
<p>this is the first section of content</p>
<p> this is another</p>
</bodyText>
</intro>
Я предполагаю, что ваш фактический документ значительно отличается от опубликованного вами примера, поэтому код потребует некоторой корректировки в соответствии с вашими требованиями, но если вы читаете документацию для XDocument вы сможете делать то, что хотите.
Я бы предложил использовать System.XML и XPath - я не думаю, что XML считается обычным языком, похожим на HTML, что вызывает проблемы при попытке его синтаксического анализа с помощью регулярных выражений.
Используйте что-то вроде
XMLDocument doc = new XMLDocument();
doc.Load("Path to your xml document");
Наслаждайтесь!
Похожие вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.