Разбор XML из середины строки - PullRequest
1 голос
/ 15 марта 2012

Я работаю с .NET и хочу выполнить некоторые манипуляции со строками, такие как:

Ввод:

hi hello <bbb name='ahhahdch'>MR.JKROY</bbb>.how are you.Let's meet
<bbb name='bbcbc'>SUSANNE</bbb>. Our team lead     is <bbb name='cdcdcd'>JACK</bbb>, from .net.

Вывод:

привет привет MR.JKROY. Как вы. Давайте встретимся.Наш руководитель группы - JACK, из .net.

В двух словах, я хочу удалить теги XML (включая атрибуты) и получить значение тега.

Ответы [ 3 ]

1 голос
/ 15 марта 2012

У вас нет действительного документа XML; если вы обнаружите, что большая часть (или все) ваших входных данных похожа на эту, вы можете легко обернуть содержимое в фиктивные теги, чтобы гарантировать, что синтаксические анализаторы не потерпят неудачу (при условии, что содержимое внутреннего узла является действительным, если оно является содержимым другого элемента XML), например так:

<root>
hi hello <bbb name='ahhahdch'>MR.JKROY</bbb>.how are you.Let's meet
<bbb name='bbcbc'>SUSANNE</bbb>. Our team lead     is <bbb name='cdcdcd'>JACK</bbb>, from .net.
</root>

Как только у вас есть действительный XML-документ, вы можете затем использовать XmlDocument класс для анализа содержимого, а затем получить текст с удаленными элементами, используя InnerText свойство :

string xml = <content from above>;

var doc = new XmlDocument();
doc.LoadXml(xml);

// Gives you only the text.
Console.WriteLine(doc.InnerText);

Или используйте XDocument класс , а затем получите текст из Value свойства в XElement, выставленном Root собственность на XDocument:

XDocument doc = XDocument.Parse(xml);

// Gives you only the text.
Console.WriteLine(doc.Root.Value);
0 голосов
/ 15 марта 2012

Использование пакета HTML Agility http://htmlagilitypack.codeplex.com/ может значительно упростить подобные вещи. Вы можете пойти и запросить элементы, используя синтаксис XPath.

Вы можете получить его через nuget, но загрузка проекта с сайта codeplex содержит пример служебного класса, который преобразует HTML в текст.

0 голосов
/ 15 марта 2012

hiya, если удаляется только его HTML-тег, тогда используйте это

string result = Regex.Replace(htmlText, @"<(.|\n)*?>", string.Empty);

Если вы получаете XML-ленту и можете создать строку с помощью LINQ, ответьте здесь: удалите теги из написанного XML-файлав строку?

Как убрать теги HTML из строки в ASP.NET?

Приветствия

...