|
C# XML Лишние пробелы
|
|||
---|---|---|---|
#18+
Доброго времени суток, в общем такая проблема, работаю с xml через Код: c# 1.
, при сохранении этого "документа", происходит такая вещь: Оригинал: Код: xml 1.
После сохранения doc.Save(path); Код: xml 1. 2.
Как убрать лишние пробелы? Пробовал Код: c# 1.
перед сохранением и перед загрузкой. Результат не тот, удаляет все пробелы. XML документ(большого объёма) становиться визуально нечитаемым. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2013, 21:18 |
|
C# XML Лишние пробелы
|
|||
---|---|---|---|
#18+
Frisker, Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2013, 12:45 |
|
C# XML Лишние пробелы
|
|||
---|---|---|---|
#18+
Frisker, XML Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33.
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
Результат Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30.
- пробельные узлы все на месте. Полностью сохранить форматирование не получится, т.к. XML - это не текст для чтения человеком, а формат хранения/передачи данных, внутреннее представление которого не имеет ничего общего с читаемым текстом; при парсинге происходит нормализация нод (например, выкидываются пробелы внутри элементов). Можно задать опеределенный формат для вывода - см. класс XmlWriterSettings, но нельзя сохранить произвольное исходное форматирование. И да, желание читать XML-документы (тем более большого формата) так же странно, как читать результат от BinaryFormatter. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2013, 15:16 |
|
C# XML Лишние пробелы
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, да, я понимаю, что это не "текстик для чтения", но фишка в чём, простое сохранение добавляет пробелы в пустые узлы/теги, это xml служит для загрузки в базу, а при загрузке в неё ругается на эти пробелы.... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2013, 10:19 |
|
C# XML Лишние пробелы
|
|||
---|---|---|---|
#18+
Friskerа при загрузке в неё ругается на эти пробелы.... Как выполняете загрузку, и в какую базу? Описанное в случае MSSQL возможно только при загрузке через bcp или BULK INSERT, но это всё разруливается файлом формата загрузки. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2013, 11:01 |
|
C# XML Лишние пробелы
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, Юзвери со стороны выгружают со своей базы (с ошибками), наши же не могут загрузить их в нашу базу (db2)... Всем спасибо за помощь, решение найдено ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2013, 18:05 |
|
C# XML Лишние пробелы
|
|||
---|---|---|---|
#18+
Friskerрешение найдено Так выложите его сюда. Пусть и другие посмотрят. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2013, 18:11 |
|
C# XML Лишние пробелы
|
|||
---|---|---|---|
#18+
Arm79, Только сильно не смеяться.... Код: c# 1. 2. 3. 4. 5. 6. 7.
P.S. Никогда, никогда не используйте XmlDocument, только XDocument. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2013, 18:59 |
|
C# XML Лишние пробелы
|
|||
---|---|---|---|
#18+
Frisker, грузить документ и снова сохранять выглядит некрасиво. Попробуй вот так сохранять: Код: c# 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2013, 19:19 |
|
C# XML Лишние пробелы
|
|||
---|---|---|---|
#18+
bazileFrisker, грузить документ и снова сохранять выглядит некрасиво. Попробуй вот так сохранять: Код: c# 1. 2. 3. 4. 5.
пробовал, тот же самый эффект. Я много способов перепробывал, остановился на своём варианте. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2013, 19:25 |
|
C# XML Лишние пробелы
|
|||
---|---|---|---|
#18+
FriskerP.S. Никогда, никогда не используйте XmlDocument, только XDocument. С какого это перепугу? P.S. XmlDocument вовсе необязательно сохранять в промежуточный файл для создания XDocument, второй из первого можно получить вот так: Код: c# 1. 2. 3. 4.
Я много способов перепроб ы вал, остановился на своём варианте. У вас явно косяк в том, что вы не привели. Т.к. XmlWriter с XmlWriterSettings по умолчанию при сериализации в строку выкидывает все пробельные узлы: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
На выводе: Код: plaintext
Это во-первых. Во-вторых, заливать XML в базу как строчные данные - решение, мягко говоря, странное. Как-то не верится, что у DB2 нет способа заливать типизированные данные - т.е. уже разобранное DOM-дерево. В MSSQL для этого используют тип SqlXml. Посмотрите на примеры вот здесь - практически во всех примерах фигурирует XML c пробельными узлами. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2013, 06:12 |
|
C# XML Лишние пробелы
|
|||
---|---|---|---|
#18+
(примеры вот здесь ) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2013, 06:13 |
|
C# XML Лишние пробелы
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, Спасибо за помощь. В базу загружаю не я, я вообще понятия не имею что в неё на пичкано и как и на чем написан был к ней интерфейс, так как нету доступа. Я всего лишь "маленькое звено" в огромной системе. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2013, 19:28 |
|
C# XML Лишние пробелы
|
|||
---|---|---|---|
#18+
Здравствуйте. Точно такая же проблема: исходный XML не содержит пробельных узлов: Код: xml 1. 2. 3.
После чтения и сохранения, даже по методу Frisker`а Код: vbnet 1. 2. 3. 4. 5. 6. 7.
результат ('pathC') все равно содержит пробелы Код: xml 1. 2. 3.
Конечный результат очень важен, т.к. этот текст должен подписываться цифровой подписью ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2013, 23:19 |
|
C# XML Лишние пробелы
|
|||
---|---|---|---|
#18+
Диамисходный XML не содержит пробельных узлов: Переносы строк между узлами в текстовом представлении - это тоже whitespace nodes, так что содержит. Диамрезультат ('pathC') все равно содержит пробелы Где? между окончанием имени тэга и самозакрывающим слэшем? Это стандартное форматирование парсера, от него вы не избавитесь, т.к. еще раз: XML - это не текст, а структура данных, и её текстовое представление - дело сугубо пятое. Либо используйте везде стандартное форматирование, задаваемое через XmlWriterSettings, либо используйте другой формат - например, бинарную сериализацию, и помещение её результата в виде base64 в CDATA, цифровой подписью подписывать результат CDATA. Если же про переносы строк между узлами - не пользуйтесь методом XmlDocument.Save(filename), используйте перегрузку XmlDocument.Save(xmlWriter). ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2013, 06:23 |
|
C# XML Лишние пробелы
|
|||
---|---|---|---|
#18+
ДиамКонечный результат очень важен, т.к. этот текст должен подписываться цифровой подписью Ерунда какая то. Почему это он важен,и как связана с ним ЭЦП? ЭЦП гарантирует целостность ОТПРАВЛЕННЫХ данных. Так что неважно, какой там у вас XML - с пробелами или нет. Это набор байтов. Так что на второй стороне проверкой ЭЦП УБЕЖДАЮТСЯ, что некий набор байтов по пути не поврежден. А уж как его интерпретировать - на это ЭЦП не влияет. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2013, 09:58 |
|
|
start [/forum/topic.php?fid=20&fpage=137&tid=1403641]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
72ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 174ms |
0 / 0 |