Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > WPF, UWP, WinRT, XAML
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 26.10.2016, 11:14   #1
reverse28
 
Регистрация: 26.10.2016
Сообщений: 9
Репутация: 10
По умолчанию Просмотр XML-файла как потокового документа

Добрый день. Возникла проблема: хотелось бы открыть файл с расширением xml в качестве потокового документа(имеется некая библиотека с компонентами, которую хотелось бы просматривать), но все найденные на просторах мануалы по работе с FlowDocument говорят только о возможности чтения rtf, txt, pdf..при попытке загрузки xml в качестве документа, выдается шибка о неправомерной разметке(это конечно оно правильно выдается, т.к. в файле теги совсем не про абзацы и отступы), но как открыть xml файл без предварительного пересохранения его в другой формат не ясно. На данный момент проблема решается загоном содержимого в TextBox, но при таком подходе не работает поиск и разбиение на страницы.

Заведомо неверная попытка открытия через FlowDocument:
Код:

using (FileStream fs = File.Open("./Library.xml", FileMode.Open))
            {
                var document = (FlowDocument) XamlReader.Load(fs);
 
                if (document == null)
                    MessageBox.Show("Ошибка при загрузке документа");
                else
             if (document != null)
                    Library.docViewer.Document = document;
            }

Итог:Дополнительные сведения: "Нельзя создать неизвестный тип "*****".": номер строки "2" и позиция в строке "2".


Загон в TextBox:
Код:

 Library.LibraryView.Text = File.ReadAllText("./Library.xml");

Пробовал пересохранять прочитанное в отдельный файл:
Код:

 bufer = File.ReadAllText("./Library.xml");
 
                        using (FileStream fs = File.Open("./NewLibrary.xml", FileMode.Create))
                        {
                            if (bufer != null)
                            {
                                XamlWriter.Save(bufer, fs);
                                MessageBox.Show("Файл сохранен");
                            }
                        }
 
                
 
            using (FileStream fs = File.Open("./NewLibrary.xml", FileMode.Open))
            {
                var document = (FlowDocument) XamlReader.Load(fs);
 
                if (document == null)
                    MessageBox.Show("Ошибка при загрузке документа");
                else
             if (document != null)
                    Library.docViewer.Document = document;
            }

но тогда: Не удалось привести тип объекта "System.String" к типу "System.Windows.Documents.FlowDocum ent".
reverse28 вне форума   Ответить с цитированием
Старый 26.10.2016, 11:38   #2
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 9,172
Репутация: 1407

icq: 216409213
По умолчанию

Цитата:
но все найденные на просторах мануалы по работе с FlowDocument говорят только о возможности чтения rtf, txt, pdf
Та ладно... Сходу:
https://social.msdn.microsoft.com/Fo...ader?forum=wpf
https://xmlflowdocument.codeplex.com...Control/latest
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 27.10.2016, 16:33   #3
reverse28
 
Регистрация: 26.10.2016
Сообщений: 9
Репутация: 10
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
В данных примерах рассматривается чтение xml файла как файла, содержащего некоторую разметку и некоторый текст. В моем же случае файл содержит только текст, но этот текст включает в себя теги, которые не являются разметкой и которые также нужно отобразить как обычный текст. Как избежать "распознования" тегов и вывести весь текст? p.s.прошу простить за тупость
reverse28 вне форума   Ответить с цитированием
Старый 27.10.2016, 16:55   #4
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 13,193
Репутация: 2575

icq: 512-7шесть5
skype: alexp.frl
По умолчанию

Это как? Покажите что в XML.
Alex11223 на форуме   Ответить с цитированием
Старый 27.10.2016, 16:59   #5
reverse28
 
Регистрация: 26.10.2016
Сообщений: 9
Репутация: 10
По умолчанию

Вопрос исчерпан. Вместо TextBox использовал Run, теперь все разделяется на страницы и работает поиск

Код:

<FlowDocumentReader >
                <FlowDocument>
                    <Paragraph>
                        <Run Name="content" />
                    </Paragraph>
                </FlowDocument>
            </FlowDocumentReader>

Код:

content.Text = File.ReadAllText("./Library.xml");


Последний раз редактировалось reverse28; 27.10.2016 в 17:15.
reverse28 вне форума   Ответить с цитированием
Старый 27.10.2016, 17:05   #6
reverse28
 
Регистрация: 26.10.2016
Сообщений: 9
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Это как? Покажите что в XML.
Некая библиотека элементов, вот скрин первой страницы:
Изображения
Тип файла: jpg 2.jpg (95.7 Кб, 0 просмотров)
reverse28 вне форума   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отображение и просмотр XML Lasor Софт 6 16.01.2013 12:31
Чтение из XML документа FaTaL C# (си шарп) 8 17.12.2012 18:16
как в XML сослаться на узел внутри текущего документа? spbcypher HTML и CSS 0 24.05.2011 12:09
Просмотр документа перед печатью. Как это делается? ProgDel Общие вопросы Delphi 7 18.11.2010 09:51




01:04.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru