Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > WPF, UWP, WinRT, XAML
Регистрация

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.10.2016, 10:14   #1
reverse28
 
Регистрация: 26.10.2016
Сообщений: 9
По умолчанию Просмотр 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, 10:38   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

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

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

Это как? Покажите что в XML.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 27.10.2016, 15:59   #5
reverse28
 
Регистрация: 26.10.2016
Сообщений: 9
По умолчанию

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

Код:
<FlowDocumentReader >
                <FlowDocument>
                    <Paragraph>
                        <Run Name="content" />
                    </Paragraph>
                </FlowDocument>
            </FlowDocumentReader>
Код:
content.Text = File.ReadAllText("./Library.xml");

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

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отображение и просмотр 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 08:51