- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
public static string AddControlDigits(string input)
{
if (String.IsNullOrEmpty(input))
return "";
try
{
XDocument doc = XDocument.Parse(input.JavaSubString(input.IndexOf("<contracts>"), input.IndexOf("</contracts>") + "</contracts>".Length));
String s = new String(doc.ToString().ToCharArray());
XElement rootElement = doc.Root.Element("list_item");
string basicNumber = rootElement.Element("basicNumber").Value;
string endNumber = rootElement.Element("endNumber").Value;
string loanCaseNumber = rootElement.Element("loanCaseNumber").Value;
string loanCaseComplementNumber = rootElement.Element("loanCaseComplementNumber").Value;
string bridgeLoanComplementNumber = rootElement.Element("bridgeLoanComplementNumber").Value;
int checkNumber = CalcCheckDigitCU(basicNumber + endNumber);
int loanCaseCheckNumber = calcCheckDigitUP(loanCaseNumber);
int bridgeLoanCheckNumber = CalcCheckDigitCU(basicNumber + bridgeLoanComplementNumber);
rootElement.Add(new XElement("checkNumber", checkNumber));
rootElement.Add(new XElement("loanCaseCheckNumber", loanCaseCheckNumber));
rootElement.Add(new XElement("bridgeLoanCheckNumber", bridgeLoanCheckNumber));
input = input.Replace(s, doc.ToString());
return "";
}
catch (Exception ex)
{
throw;
}
}
Smekalisty 10.01.2014 14:24 # +4
Гениально
taburetka 10.01.2014 14:26 # 0
bormand 10.01.2014 15:21 # 0
Дальше - еще гениальней. Замена ноды в XML через... String.replace. Автору надо идти работать практологом, бесценный опыт уже есть...
taburetka 10.01.2014 15:42 # +1
bormand 10.01.2014 15:45 # +4
Ёбаный пиздец, простите, не удержался.
Ну вот зачем, зачем люди нарушают стандарты... XML и так не сахар, так они еще проблем себе и другим добавляют... Вот неужели им было так сложно заключить эти несколько root нод в истинную root ноду, и юзать самый обычный парсер...?
taburetka 10.01.2014 15:49 # +1
bormand 10.01.2014 16:01 # +5
У вас была проблема, и для ее решения вы выбрали XML. Теперь у вас две проблемы.
Ну по крайней мере, если юзаются стандартные генераторы и парсеры, то хотя бы нет секса с кодировками, экранировками, множественными рутами и прочей херней, возникающей от большого ума...
Lokich 10.01.2014 18:59 # +6
I had a problem so I thought to use Java. Now I have a ProblemFactory.
bormand 10.01.2014 19:01 # +6
So, you have a problem. You say "I know, I'll use floating point!" Now you have 2.0001341678 problems.
bormand 10.01.2014 19:33 # +6
guest 10.01.2014 19:02 # 0
Неужто Linq2Xml неизящен? По сравнению с DOM и прочей лабудой...
Не менее изящно - использование xml-сериализации/десериализации. Перегоняем данные xml в объекты предметной области - хорошо!
-----
В Scala есть XML pattern matching. Погугли, глянь пример. В какой-то мере изящно. Но с непривычки может торкнуть.
Возможно, немерлисты реализуют подобное...
bormand 10.01.2014 15:47 # 0
kegdan 10.01.2014 16:16 # +3
wvxvw 10.01.2014 21:20 # +1
bormand 10.01.2014 21:41 # +1
Я вот пока вижу такую более-менее вескую причину, где это могло бы понадобиться - большой файл, в который довольно часто приписывают все новые и новые xml'ки. В случае ОП'а причина явно не такая ;)
wvxvw 10.01.2014 23:07 # 0
Иногде просто до автора не добраться, вот, например, автор того, что я сейчас поддерживаю ушел работать в силовые структуры, и сидит в сейфе за семью печатями, за колючей проволкой, взводом ментов с овчарками и все такое - до него никак не дотянуться...
bormand 10.01.2014 23:24 # +1
Одно время мучился, писал редактор для файла с переводами, который должен был быть именно в таком недоиксэмэль, и кодировке 1251 (привет, европа). Кому-то лень было юзать стандартный генератор\парсер, и он сваял свое говно, в котором ни декларации вверху, ни entity вместо &, < и ", и что-то там еще было несовместимое, уже не помню...
Короче через обычный парсер это было бесполезно гонять, и пришлось писать свой говнопарсер, совместимый с тем...
> ушел работать в силовые структуры
Он знал, что за ним придут ;)
eth0 12.01.2014 12:32 # +2
Это от слова "практика"?
krypt 10.01.2014 14:31 # 0
Я так понимаю, здесь на XAML издеваются... Вивисекцией пахнет )
taburetka 10.01.2014 14:35 # +1
krypt 10.01.2014 14:50 # +3
kegdan 10.01.2014 14:58 # +5
{
throw;
}
вот это действительно гениально! Человек снипеты умеет юзать -честь ему и хвала.
нахрена он возвращает пустую строку?
kegdan 10.01.2014 15:04 # +1
в моем шарпике? ЛОЛКИ
Метод вообще ничего не меняет и не выводит. Он состояние даже не трогает) ну разве что через CalcCheckDigitCU
loanCaseComplementNumber не используется даже в пределах метода.
bormand 10.01.2014 15:22 # 0
Он может упасть, а может не упасть. Так что 1 бит инфы он все-таки возвращает.
kegdan 10.01.2014 15:26 # 0
Lokich 10.01.2014 18:59 # 0
guest 10.01.2014 18:58 # −2
JavaSubString - неведомая фигня.
input = input.Replace - строки неизменяемые, поэтому этот метод ничего не производит.
bormand 10.01.2014 19:03 # +2
Т.е. экстеншн методы в шарпе уже запретили?
> строки неизменяемые
Да там поди при копировании на ГК накосячили: не return "", а return input.
taburetka 10.01.2014 19:25 # 0
будет ane
а так:
будет: one
Вы это имели ввиду?
taburetka 10.01.2014 19:27 # +1
kegdan 10.01.2014 19:49 # 0
OMG
1 создается новая строка с помощью метода Replace
2 ссылка на новую строку присваивается input
Не?
bormand 10.01.2014 20:00 # 0
При этом т.к. аргумент в функцию прилетел не по ссылке (не out и не ref), то и вызывающая функция ничего не заметит.
kegdan 10.01.2014 20:06 # 0