Есть файл с содержимым вида
<Book>
<Page number='1'><![CDATA[line1
line2
line3]]>
</Page>
<Page number='2'><![CDATA[line1]]>
</Page>
</Book>
Нужно распарсить содержимое через RegExpr. Вроде ничего сложного. Тест для класса PageParser должен срабатывать:
//PageParser
class PagePaerser
{
public static IList<Page> Parse(string xml)
{
IList<Page> pages = new List<Page>();
string pattern = "<Page number='(?<number>\\d*?)'><\\!\\[CDATA\\[(?<content>.*?)\\]\\]><\\/Page>";
var matches = Regex.Matches(xml, pattern, RegexOptions.IgnoreCase | RegexOptions.Multiline);
if (matches.Count>0)
{
foreach(Match match in matches)
{
pages.Add(new Page()
{
content = match.Groups["content"].Captures[0].Value,
number = int.Parse(match.Groups["number"].Captures[0].Value)
});
}
}
return pages;
}
}
[TestMethod]
public void ParseMethod_ListOfPages_Test()
{
var parsed_pages = PageParser.Parse(@"<Book>
<Page number='1'><![CDATA[line1
line2
line3]]>
</Page>
<Page number='2'><![CDATA[line1]]>
</Page>
</Book>
");
Assert.AreEqual(2, parsed_pages.Count);
}
Но тест не срабатывает. Дело в том, что в RegExpr для обработки multiline-строк, нужно вместо флага RegexOptions.Multiline устанавливать RegexOptions.Singleline, который меняет режим символа "." на улавливание совпадений со всеми символами, а не всех символов, кроме новой строки (\n)
RegexOptions
Объектные NoSql базы для .Net
Небольшой обзор объектных БД под .Net. В обзор попали Eloquera, STSdb, Siaqodb, Ninja Database Lite.
Ссылка
dotPeek - бесплатный декомпилятор от JetBrains
На замену .NetReflector, который стал платным, компания JetBrains выпустила свой бесплатный декомпилятор dotPeek, который умеет
- декомпилировать сборки .Net всех версий (1-4) в C#
- делать навигацию по коду (такую же как и в ReSharper) и понимает клавиатурные шорткаты, аналогичные ReSharper’у
- делать подсветку синтаксиса, фолдинг, и в целом предоставлять experience, аналогичный Visual Studio
Детальный обзор dotPeek
Скачать dotPeek
- декомпилировать сборки .Net всех версий (1-4) в C#
- делать навигацию по коду (такую же как и в ReSharper) и понимает клавиатурные шорткаты, аналогичные ReSharper’у
- делать подсветку синтаксиса, фолдинг, и в целом предоставлять experience, аналогичный Visual Studio
Детальный обзор dotPeek
Скачать dotPeek
Подписаться на:
Сообщения (Atom)
Ярлыки
.net
(17)
.net framework
(4)
256
(1)
армагедон
(1)
Библиотека
(12)
видео
(1)
вконтакте
(1)
декомпилятор
(1)
задачки
(5)
итоги
(1)
кодировка
(1)
космос
(1)
маркет
(1)
монетизация
(2)
мысли в слух
(10)
обфускация
(1)
Оптимизация сайта
(1)
отдых
(3)
Ошибка 720
(1)
переводы
(5)
подкасты для разработчика
(3)
прибыль
(1)
приложение
(2)
Разное
(28)
разработка ПО
(31)
рефакторинг
(5)
скачивания
(1)
ссылки
(2)
статистика
(1)
юмор
(31)
Access
(1)
admin2012.ru
(1)
admob
(1)
AMD
(1)
android
(6)
android conventions
(1)
android studio
(1)
angular.js
(1)
ant
(1)
antipattern
(1)
atdd
(2)
autocomplete
(1)
backbone.js
(1)
background repeat
(1)
batch file
(1)
batman.js
(1)
bdd
(3)
bootstrap
(1)
bug
(1)
build
(1)
C#
(31)
clojurescript
(1)
codeigniter
(1)
coding style
(1)
coffeescript
(3)
components
(1)
css
(1)
Custom splash screen
(1)
DDD
(1)
DI
(1)
eclipse
(1)
facebook
(1)
gradle
(1)
hot keys
(1)
html
(4)
ide
(1)
IE
(4)
IE8
(2)
IoC
(6)
ion auth
(1)
jasmine
(1)
java
(3)
javas
(1)
javascript
(9)
jquery
(4)
jquery ui
(1)
justify
(1)
knockout.js
(2)
linq
(3)
localDB
(1)
massive
(1)
micro orm
(1)
mocha
(1)
mock
(1)
mono
(1)
monodroid
(1)
moq
(2)
mpress
(1)
ms sql ce
(8)
msswit2013
(2)
mvc framework
(1)
mysql
(2)
NetBeans
(1)
nodejs
(1)
nosql
(1)
npm
(1)
object db
(1)
opera apps
(1)
ORM
(2)
phonegap
(1)
php
(12)
phpunit
(3)
play market
(2)
qunit
(1)
RegExpr
(2)
require.js
(1)
samsung apps
(2)
screenshoot
(1)
sdk
(1)
Shortcut
(1)
Silverlight
(4)
singleton
(1)
slide me
(1)
soap
(2)
social network
(1)
spellcheck
(1)
SpicIE
(1)
sql
(3)
sqlite
(4)
style
(1)
SublimeText 2
(5)
Super Mario
(1)
svn
(1)
tdd
(14)
tddigest
(5)
testing
(7)
text align
(1)
Tools
(18)
torrents.ru
(1)
tortoisesvn
(1)
twitter
(1)
uml
(1)
unit testing
(5)
unity
(3)
usability
(2)
virus
(1)
visual studio
(7)
web services
(2)
Windows 7
(1)
xunit
(3)
ZenCoding
(2)
Копирайты
Авторские права на публикуемые материалы (кроме тех материалов, где явно указан источник) принадлежат автору блога (мне) и могут быть использованы где-либо еще только с моего согласия.
Блог о жизни вне кода
Постоянные читатели
Популярно
-
Понравился анекдот о колбасе и яйцах :) Жена посылает мужа-программиста в магазин: - Дорогой, купи, пожалуйста, палку колбасы, и если б...
-
Продолжаю серию постов о своём первом андроид-приложении. Сегодня мысли о публикации приложения в разных маркетах.
-
Бета-версия одиннадцатой cтудии вызвала много охов и ахов. Чтобы там ни говорили, работать в ней приятно, хоть по началу немного необычно. ...
-
Jquery.Inputmask - крутой (да-да, именно) плагин, добавляющий гибкости в работу с обычным текстовым полем для ввода. Плагин является ус...
-
Перевод поста "Top 10 Things That Annoy Programmers" Кевина Панга. Оригинал тут
-
Разделяй и влавствуй - подход на все времена. Концепция модульного программирования не нова, и хорошо себя зарекомендовала. В мире разрабо...
-
Фридман А.Л. - Основы объектно-ориентированной разработки программных систем. ( скачать ) Книга написана как учебное пособие для студентов ...
-
Steve Freeman, Nat Pryce. Growing Object-Oriented Software, Guided by Tests ( скачать ) Test-Driven Development (TDD) is now an established...
-
Для некоторых методов класса Microsoft Code Analysis даёт такой совет: CA1822 : Microsoft.Performance : The 'this' parameter (or ...