正则表达式,用于查找XML节点中的字符串实例

时间:2009-10-15 19:44:11

标签: xml regex

我需要在xml节点中找到所有字符串实例。更具体地说,我想解析一些XAML并将所有字符串放在某些控件中(标签为一个)并将它们设置为属性。所以,而不是这个

<Label>My string</Label>

我想要这个:

<Label Content="My string"></Label>

我提出的正则表达式是“&gt; \ s * [^&lt;]”。我将此读作匹配的字符串,其中包含大于符号,后跟任意数量的空格,后跟除了小于符号之外的任何字符。但是,我没有得到我的期望。例如,以下是其中一个匹配项:

>\\r\\n\\t\\r\\n    <UserControl..."

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

这里已经说了一千次:不要试图用正则表达式“解析”XML。这里使用的正确工具是xml处理器。

通过这样,很容易 - 而且更重要的是,没有错误 - 选择内部的所有<Label>元素和文本节点(My string),并从中生成新的XML节点(<Label Content="My string"></Label>)。实施留给读者练习:)

答案 1 :(得分:1)

您可以搜索

<(Label|OtherTag|YetAnotherTag)>(\s*[^<]*)</\1>

并将其替换为

<\1 Content="\2"></\1>

甚至

<\1 Content="\2"/>

如果您完全确定在您正在查看的那些标签中没有任何嵌套标签,除了正则表达式之外别无他法。