.net 从字符串中间解析XML
我正在使用.NET,我想做一些字符串操作,如下所示: 输入:.net 从字符串中间解析XML,.net,xml,string,c#-4.0,xml-parsing,.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. 你好,JKROY先生。你好。我们见面
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.
你好,JKROY先生。你好。我们见面吧
苏珊娜。我们的队长是杰克,来自.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.
嗨,你好,JKROY先生。你好。我们见面吧。我们的队长是杰克,来自.net
简而言之,我想删除XML标记(包括属性)并检索标记的值。您没有有效的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>
或使用,然后通过以下方式从上获取文本:
hiya如果只删除其HTML标记,则使用此
string result = Regex.Replace(htmlText, @"<(.|\n)*?>", string.Empty);
string result=Regex.Replace(htmlText,@“”,string.Empty);
如果您正在获取XML提要,并且可以使用LINQ good Answare在此处创建字符串:
干杯使用HTML敏捷包可以让这类事情变得更容易。您可以使用XPath语法查询元素
您可以通过nuget获得它,但是从codeplex站点下载的项目中有一个将html转换为文本的实用程序类示例。这不起作用,因为在他的示例中,这不是有效的XML文档。他需要一个删除算法case@Justin我更新了我的答案以反映这一点;这是一个简单的修复方法,只需将内容包装在伪标记中以确保解析成功。它仍然无法工作,因为整个字符串中的随机位置都有纯文本。Tats建议的正则表达式是本例中最干净的解决方案。@Justin随机文本很好,示例字符串中的所有内容,如果包装在一组标记中,则是一个有效的XML文档。@Justin如果内容包装在一组标记中,字符串的哪些部分会给XML解析器带来问题?鉴于可靠解析器的普及,使用常规经验解析XML或HTML是最糟糕的方法之一。当一个解决方案在框架中(XDocument和XmlDocument for XML)或者很容易获得(HtmlAgilityPack for HTML for NuGet)时,这就不值得麻烦了;是的,我同意regex的表现,将删除我的答案。同样,这个解决方案是一个牛仔解决方案,用于处理一行代码,而不是解析整个HTML标记文件。干杯。您不必删除您的答案,只是有效XML的正则表达式实际上与性能无关,而更重要的是让所有有效的XML标记表示都正确无误@casperOne+1表示链接伙伴!传奇他要求的是XML,而不是HTML。他没有有效的XML文档,所以考虑到他需要解析垃圾,我的建议是可靠的。另外,我在敏捷包中提到的示例仍然是解决他的问题的有用代码。
string result = Regex.Replace(htmlText, @"<(.|\n)*?>", string.Empty);