是的,我真的會問關於用正則表達式解析XML ......這裏。解析XML-ish數據
我有一些XML-ISH數據,我需要解析它。我不能用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禮貌地忽略導致它翻倒的$字符?這似乎不太可能,但我認爲我應該至少得到一些意見。
我同意,爲特殊目的添加一個特殊的標籤顯然是解析方面的最佳選擇,並且在將來能夠繼續解析xml文檔。我只是非常希望我不會讓我的用戶改變他們的文檔,並且記得以新的方式編寫未來的文檔......關於CDATA,確實可能會有很多轉義,因爲「特殊「位可能會很長,甚至可能是文檔的大部分。 – Neil
@Neil你不能通過提供現有的方法作爲回退來遷移嗎?查看我的更新瞭解更多詳情。 – Justin
我沒有想到這一點。這聽起來像它會工作得很好。 – Neil