C# 使用正则表达式编辑作为纯文本访问的Xml InnerText?

C# 使用正则表达式编辑作为纯文本访问的Xml InnerText?,c#,.net,xml,regex,html-agility-pack,C#,.net,Xml,Regex,Html Agility Pack,我有以下假样品: <family> <member> dad </member> <member> mum </member> <member> son </member> <member> grandad<> </member> </family> 爸爸 妈妈 儿子 爷爷 我得到了一个要转换成XML的文档,但到目前为止我还没有成功。我

我有以下假样品:

<family>
   <member> dad </member>
   <member> mum </member>
   <member> son </member>
   <member> grandad<> </member>
</family>

爸爸
妈妈
儿子
爷爷
我得到了一个要转换成XML的文档,但到目前为止我还没有成功。我无法控制如何创建给我的文档(html),但我需要将文档转换为xml;这样我就可以使用样式表来转换它

在我的工作流程中,TidyManaged和HAP在现阶段对我没有好处。如果人们有兴趣知道原因,我们会解释更多

为了成功使用HAP,我需要上面的示例如下所示:

<family>
   <member> dad </member>
   <member> mum </member>
   <member> son </member>
   <member> grandad&lt;&gt; </member>
</family>

爸爸
妈妈
儿子
爷爷
在我放弃这个问题之前,我的最后一个方法是,读入我的源html文档,将其视为一个计划文本文档并逐行阅读

我需要有人给我一些正则表达式,它将成功地匹配元素的内部文本,即:

<member> grandad<> </member>
grandad
请给我绳子:

"grandad<>"
“格兰德”
如果我能做到这一点,我应该能够将尖括号转换为html关键代码等价物。然后,这应该作为有效的XML传递,允许我将其加载到XDocument类中

然后用以下字符串替换该结果字符串:

<member> grandad&lt;&gt; </member>
grandad
当所有特殊字符都像这样被正确地“转义”后,我将能够充分利用HTML Agility Pack(HAP)的优点,否则我将不得不放弃


感谢阅读。

如果您可以手动处理每个文档,则可以使用记事本++


reindent xml(TextFX->TextFX HTML工具->reindent xml>功能将自动应用所需的实体。

最简单的正则表达式

var reg = new Regex(@"(?<=<(\w+)>)(.*)(?=</\1>)");
var input = "<member> grandad<Regexp is a bad tool because of <strong>this</strong>> </member>";
var output = reg.Match(input).Value;

var reg=new Regex(@”(?在<和>>之间有什么关系吗?例如,你必须担心grandad吗?是的,基本上,我不关心“”之间的关系,因为它们很好,我关心“>some dodgy”之间的关系。我问的原因是,如果你必须处理grandad。那么regexp就不太好了。好的语法就是角度brackets和ampersand,检测它们并对它们进行编码。我所需要的只是一些正则表达式,当文档被视为纯文本文档时,它可以获取元素的内部文本。@acarlon xml格式不正确,因为它包含没有名称的标记或不匹配的标记。因此xpath已过时。如果您在.net中有可能处理malfor在我读到这个问题时,这将是一个很好的问题解决方案,但是你不需要去xsd。对不起,伙计,我所说的文档量是6位数。使用记事本++是不可能的。在HAP获得文档之前,这需要一些自动化的预清理阶段。每个在将单个文档提交到工作流进行处理之前,需要对其进行清理。是否要处理多个成员标记pr行?我认为您可以将\w+更改为[^\>]以处理空白/属性。(如果属性包含“”,则除外)我更喜欢处理regexp中需要的内容。如果使用
[^\>]
它将匹配尖括号内的所有内容,因此无法定义结束标记的确切名称