Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 从字符串中间解析XML_.net_Xml_String_C# 4.0_Xml Parsing - Fatal编程技术网

.net 从字符串中间解析XML

.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先生。你好。我们见面

我正在使用.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。 输出:

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);