【发布时间】:2011-07-19 09:44:43
【问题描述】:
是的,我真的要问一下关于用正则表达式解析 XML 的问题……就这样吧。
我有一些类似 XML 的数据,我需要解析它。我不能用 XMLDocument 或类似的东西完全做到这一点,因为它不是正确的 XML,而且我不确定我是否可以(或想要)更改格式。主要问题是标签有特殊含义,看起来像这样:
<$ something_here $>
C# 的 XmlDocument 无法解析它,我认为其他方法也会如此。经过大量工作,我可以将上面的内容更改为类似
<some_special_tag><![CDATA[ something_here ]]></some_special_tag>
但这很丑,我也不想这么做。更改会很耗时的原因是我有数百甚至数千个 XML 文档需要更改。
目前,我正在使用正则表达式解析文档。我只需要挑选几个特定的标签(不是上面的标签),它似乎可以工作,但我对此感到不舒服。我现在正在做这样的事情:
...
MatchCollection mc = Regex.Matches(Template, "<tagname.*?/tagname>"); // or similar
foreach (Match m in mc) {
try {
XmlDocument xd = new XmlDocument();
xd.LoadXml(m.Value);
...
这至少意味着我没有专门使用正则表达式:)
谁能想到更好的方法?有什么方法可以让 XmlDocument 礼貌地忽略导致它倒下的 $ 字符吗?这似乎不太可能,但我认为我至少应该得到一些意见。
【问题讨论】: