从字符串中间解析XML

时间:2012-03-15 03:07:10

标签: .net xml string c#-4.0 xml-parsing

我正在使用.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.how你。我们见面了。我们的团队负责人是JACK,来自.net。

简而言之,我想删除XML标记(包括属性)并检索标记的值。

3 个答案:

答案 0 :(得分:1)

您没有有效的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 class解析内容,然后使用InnerText property获取删除了元素的文本:< / p>

string xml = <content from above>;

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

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

或者使用XDocument class,然后从Value property公开的XElement上的Root property on XDocument获取文字:

XDocument doc = XDocument.Parse(xml);

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

答案 1 :(得分:0)

hiya如果只删除HTML标记,则使用此

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

如果你正在获取XML feed,你可以使用LINQ好的回答来创建字符串:remove tags from a xml file written to a string?

How can I strip HTML tags from a string in ASP.NET?

干杯

答案 2 :(得分:-3)

使用HTML Agility pack http://htmlagilitypack.codeplex.com/可以使这种事情变得更加容易。您可以使用XPath语法查询元素。

您可以通过nuget获取它,但是从codeplex网站下载的项目有一个将html转换为文本的实用程序类的示例。