|
||||||||||||||||||||||||||||||||||||||||
|
Открываю XML в браузере и выходит пустая белая страница - XML/XSL. Xml отображение в браузереВизуализация Xml-документов / ХабрахабрЧто мы имеемРассмотрим простенький xml-документ:
Существует несколько способов визуализировать содержимое этого документа. К нему можно подключить обычную таблицу стилей (css-файл) или таблицу преобразований. Таблица преобразований представляет из себя xml-документ, оформленный по определённым правилам и имеющий расширение .xslt. Допустим нам нужно отобразить информацию, содержащуюся в xml-документе, для этого создадим таблицу преобразований (файл будет называться style.xslt):
В двух словах, как это работаетВ таблице преобразований описаны три шаблона: document, items и item. Когда в шаблоне встречается элемент xsl:apply-templates на его место подставляются то, что получится в результате обработки всех элементов, удовлетворяющих выражению select (я указывал просто названия тегов, хотя там могут быть достаточно сложные конструкции). Аналогично вставляются значения тегов (тег xsl:value-of) и атрибуты для тегов (тег xsl:attribute).Всё преобразование делается на стороне клиента. Это лишь малая доля того, что может предоставить технология таблиц преобразований. Visual Studio имеет удобный интерфейс по работе с ними, в том числе просмотр сгенерированного html. habrahabr.ru c# - Не могу отобразить xml в виде таблицы в браузереИмеется xml и xslt файлы. Открываю xml в браузере и он отображается как обычно, но не как таблица. В чем ошибка? <?xml version="1.0" encoding="windows-1251"?> <?xml-stylesheet type="text/xsl" href="XSLTFile1.xsl" ?> <?xml-stylesheet type="text/css" href="Stylesheet1.css"?> <NewDataSet> <izdelia> <material>сталь</material> <number>1</number> <length>1</length> <width>2</width> <heigth>3</heigth> </izdelia> <izdelia> <material>дерево</material> <number>2</number> <length>2</length> <width>3</width> <heigth>4</heigth> </izdelia> <izdelia> <material>пластмасса</material> <number>3</number> <length>4</length> <width>5</width> <heigth>6</heigth> </izdelia> <izdelia> <material>ольха</material> <number>10</number> <length>100</length> <width>26</width> <heigth>89</heigth> </izdelia> <izdelia> <material>дуб</material> <number>10</number> <length>1000</length> <width>26</width> <heigth>89</heigth> </izdelia> <izdelia> <material>дуб</material> <number>10</number> <length>1000</length> <width>26</width> <heigth>89</heigth> </izdelia> <izdelia> <material>дуб</material> <number>10</number> <length>1000</length> <width>26</width> <heigth>89</heigth> </izdelia> <izdelia> <material>дубо</material> <number>10</number> <length>1000</length> <width>26</width> <heigth>89</heigth> </izdelia> <izdelia> <material>дуба</material> <number>10</number> <length>1000</length> <width>26</width> <heigth>89</heigth> </izdelia> <izdelia> <material>дубо</material> <number>10</number> <length>1000</length> <width>26</width> <heigth>89</heigth> </izdelia> <izdelia> <material>дуба</material> <number>10</number> <length>1000</length> <width>26</width> <heigth>89</heigth> </izdelia> </NewDataSet> <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"> <xsl:template match="NewDataSet"> <html> <body> <table border="1"> <tr bgcolor="#CCCCCC"> <td align="center"><strong>Материал</strong></td> <td align="center"><strong>Количество</strong></td> <td align="center"><strong>Длина</strong></td> <td align="center"><strong>Ширина</strong></td> <td align="center"><strong>Высота</strong></td> </tr> <xsl:for-each select="NewDataSet/izdelia"> <tr bgcolor="#F5F5F5"> <td><xsl:value-of select="material"/></td> <td align="right"><xsl:value-of select="number"/> <xsl:value-of select="number/@caption"/></td> <td><xsl:value-of select="length"/></td> <td><xsl:value-of select="width"/></td> <td><xsl:value-of select="heigth"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet> NewDataSet { display: table } izdelia { display: table-row } material, number,length, width, heigth { display: table-cell }Чем открыть XML-файл (программы и онлайн-сервисы)XML – расширяемый вид языка разметки Markup Language. Внутри файла с таким расширением могут храниться базы данных, настройки приложений, данные программных комплектов и другая информация. Подобные документы имеют широкое распространение среди пользователей, поэтому вопрос, как открыть XML, возникает достаточно часто. Использование текстовых редакторовВнутри XML-документа находится текстовая информация, поэтому для его просмотра в читаемом виде не требуется платное программное обеспечение. Можно воспользоваться браузером, любым текстовым редактором, встроенным в Windows или от сторонних разработчиков, или специальными программами для работы с форматом XML. Блокнот Windows и его аналогиВ составе Windows изначально есть программа, которая умеет работать с любым текстом – Блокнот. Найти её можно в списке стандартных приложений в меню «Пуск». Вместе с ним предустанавливается еще один текстовый редактор – WordPad. Его также можно использовать для просмотра документов с расширением XML. Если щелкнуть по XML-файлу правой кнопкой, то сразу под пунктом «Открыть» будет строка «Изменить». При нажатии на неё содержимое документа отобразится в Блокноте. Если так открыть файл не получается, или вы хотите использовать для просмотра WordPad, раскройте меню «Открыть с помощью». Для чтения и редактирования XML-документов можно использовать и блокноты от сторонних разработчиков: например, NotePad++. В нем реализована подсветка синтаксиса, что может показаться удобным при редактировании файла. Пакет Microsoft OfficeВместо Блокнота, WordPad и других подобных программ можно использовать приложения из пакета Microsoft Office – Word и Excel.
Минус Word в том, что в нем тяжело редактировать XML. Поэтому если вы хотите изменить какие-то данные, то лучше использовать Excel.
Редакторы XMLЕсли необходимо не просто увидеть содержимое таблиц, а еще и отредактировать их, то рекомендуется применять специальный софт, разработанный для работы с форматом XML. Можно использовать следующие редакторы:
Программы отличаются предоставляемыми возможностями: в одних есть функция XSLT трансформации для преобразования XML-документов, подсказки в виде выделенных участков кода; другие предлагают только просмотр и минимальное редактирование. Выбор зависит от потребностей и навыков пользователя, так как софт является специализированным. Однако скачать перечисленные программы можно бесплатно. Просмотр через браузерЕсли на компьютере вдруг не оказалось ни одного текстового редактор, или XML не открывается в читаемом виде, можно воспользоваться браузером или посмотреть содержимое файла онлайн. БраузерыВсе современные браузеры поддерживают чтение формата XML. Однако нужно понимать, что раз в документе нет сведений о том, как отображать данные, веб-обозреватели показывают их «как есть». Чтобы использовать для открытия браузер (на примере Chrome):
Аналогичным образом запуск выполняется через другие браузеры. В обозревателе откроется новая вкладка, внутри которой отобразится содержимое документа XML. В Mozilla Forefox можно открыть файл другим способом:
Если файл поврежден, то браузер при попытке открыть документ может вывести сообщение об ошибке. В таком случае рекомендуется воспользоваться одним из редакторов XML, указанных выше. Онлайн-сервисПросмотреть и отредактировать XML-файл можно на онлайн-сервисе xmlgrid.net. Порядок работы такой:
На странице отобразится содержимое документа. Вы можете его просматривать и редактировать прямо в окне браузера. Есть и другие онлайн-сервисы — например, CodeBeautify, XML Editor от TutorialsPoint. Так что файл XML при любом раскладе будет прочитан и отредактирован, если у пользователя возникнет такое желание. compconfig.ru xml - Вставить XSL в XML для отображения в веб-браузере: что я делаю неправильно?Итак, я попытался это исследовать, и я почти полностью ухожу. Я нашел способ внедрить XSL в XML на dpawson.co.uk, но я не могу понять, что я делаю неправильно. Я искал интернет, пытаясь найти решения и объяснения, но никто, кажется, не получил ответа. Я пытаюсь создать один файл, который не зависит от сервера, поэтому я могу отправить один файл своим коллегам в надежде, что они смогут просмотреть файл, открыв его в своем веб-браузере. Здесь мой код: <?xml version="1.0" encoding="ISO-8859-1"?> <!--Start XSL--> <?xml-stylesheet type="text/xml" href="#stylesheet"?> <!DOCTYPE doc [ <!ATTLIST xsl:stylesheet id ID #REQUIRED> ]> <doc> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > <xsl:template match="xsl:stylesheet" /> <!--Variables--> <xsl:variable name="a" select="list/movie/seen[@value ='Yes']" /> <xsl:variable name="b" select="list/movie/seen" /> <xsl:variable name="c" select="sum(list/movie/rating/@value)" /> <xsl:variable name="d" select="$c div count($a)" /> <xsl:variable name="e" select="count($a) div count($b)" /> <xsl:variable name="f" select="list/movie/seen[@value ='No']" /> <xsl:variable name="g" select="list/movie/seen[@value ='Prior']" /> <xsl:variable name="h" select="count($f) div count($b)" /> <xsl:variable name="j" select="count($g) div count($b)" /> <xsl:variable name="minutes_total" select="sum(list/movie/length[@value ='y'])" /> <xsl:variable name="minutes" select="$minutes_total mod 60" /> <xsl:variable name="hours" select="floor($minutes_total div 60) mod 24" /> <xsl:variable name="hours2" select="floor($minutes_total div 60)" /> <xsl:variable name="days" select="floor($hours2 div 24)" /> <xsl:decimal-format name="percent" /> <xsl:decimal-format name="average" decimal-separator="." /> <!--End Variables--> <xsl:template match="/doc"> <html> <head> <style> h3{ font-family: Courier, Courier New, monospace; font-size: 32px; text-decoration: underline; } body{ font-family: Courier New, monospace; } p{ font-size: 16px; } table{ font-size: 14px; } .title{ text-align:left; } .release{ text-align:center; } .seen{ text-align:center; } .rating{ text-align:right; } .length{ text-align:center; } </style> </head> <body> <h3>My Movie List</h3> <p>Movies seen so far: <xsl:value-of select="count($a)" />/<xsl:value-of select="count($b)" /> = <xsl:value-of select="format-number($e, '#%', 'percent')" /><br /> Movies yet to see: <xsl:value-of select="count($f)" />/<xsl:value-of select="count($b)" /> = <xsl:value-of select="format-number($h, '#%', 'percent')" /><br /> Movies seen prior to making list: <xsl:value-of select="count($g)" />/<xsl:value-of select="count($b)" /> = <xsl:value-of select="format-number($j, '#%', 'percent')" /><br /> Total time watched: <xsl:value-of select="format-number($days, '#0')" /> days, <xsl:value-of select="format-number($hours, '#0')" /> hours, <xsl:value-of select="format-number($minutes, '#0')" /> minutes<br /> Average rating: <xsl:value-of select="format-number($d, '#.000', 'average')" /> stars out of 5</p> <br /> <table border="1"> <tr> <th>#</th> <th>Title</th> <th>Release Date</th> <th>Length</th> <th>Seen</th> <th>Rating</th> </tr> <xsl:for-each select="list/movie"> <xsl:choose> <xsl:when test='seen = "Yes"'> <tr> <td> <xsl:number /></td> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="release"/></td> <td><xsl:value-of select="length" /> minutes</td> <td><xsl:value-of select="seen"/></td> <td><xsl:value-of select="rating"/></td> </tr> </xsl:when> <xsl:when test='seen = "Seen prior to making list"'> <tr> <td> <xsl:number /></td> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="release"/></td> <td><xsl:value-of select="length"/> minutes</td> <td><xsl:value-of select="seen"/></td> <td><xsl:value-of select="rating"/></td> </tr> </xsl:when> <xsl:otherwise> <tr> <td> <xsl:number /></td> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="release"/></td> <td><xsl:value-of select="length" /> minutes</td> <td><xsl:value-of select="seen"/></td> <td><xsl:value-of select="rating"/></td> </tr> </xsl:otherwise> </xsl:choose> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet> <!--Start XML--> <list> <movie> <title>2001: A Space Odyssey</title> <release>1968</release> <seen value="No">No</seen> <rating>N/A</rating> <length value="n">141</length> </movie> <movie> <title>28 Days Later</title> <release>2002</release> <seen value="No">No</seen> <rating>N/A</rating> <length value="n">113</length> </movie> <movie> <title>28 Weeks Later</title> <release>2007</release> <seen value="No">No</seen> <rating>N/A</rating> <length value="n">100</length> </movie> <movie> <title>A Clockwork Orange</title> <release>1971</release> <seen value="Yes">Yes</seen> <rating value="2">☆☆☆★★</rating> <length value="y">136</length> </movie> <!--Rest of XML--> </list> </doc>Это список фильмов, в которых содержится столько, сколько я видел до сих пор, сколько я еще не видел, сколько я видел до того, как я составил список, общее количество времени, которое я внес в просмотр фильмов и средний рейтинг за просмотр фильма. Проблема заключается в том, что все переменные отображаются с нулевым значением, что приводит к делению на нули, которые также дают значение NaN для некоторого выхода. Все, что угодно может предложить, будут очень благодарны! qaru.site Отображение xml во Всемирной паутинеНаиболее распространены три способа преобразования XML-документа в отображаемый пользователю вид:
Без использования CSS или XSL XML-документ отображается как простой текст в большинстве веб-браузеров. Некоторые браузеры, такие как Internet Explorer и Mozilla Firefox отображают структуру документа в виде дерева, позволяя сворачивать и разворачивать узлы с помощью нажатий клавиши мыши. Применение стилей css.Процесс аналогичен применению CSS к HTML-документу для отображения. Для применения CSS при отображении в браузере, XML-документ должен содержать специальную ссылку на таблицу стилей. Например: <?xml-stylesheet type="text/css" href="myStyleSheet.css"?> Это отличается от подхода HTML, где используется элемент <link>. Применение xsl.XSL является семейством рекомендаций, описывающих языки преобразования и визуализации XML-документов. Документ трансформируется в формат, подходящий для отображения в браузере. Браузер — это наиболее частое использование XSL, но не стоит забывать, что с помощью XSL можно трансформировать XML в любой формат, например VRML, PDF, текст. Для задания XSL трансформации (XSLT) на стороне клиента требуется наличие в XML инструкции следующего вида: <?xml-stylesheet type="text/xsl" href="transform.xsl"?> Словари xmlТак как XML является достаточно абстрактным языком, были разработаны словари XML. Словарь позволяет разработчикам договориться о некотором конечном наборе имен тегов и атрибутов этих тегов. Одним из первых словарей является XHTML, который понимают большинство браузеров. XHTML часто используют для хранения и редактирования контента в CMS. Были созданы более специализированные словари, например протокол передачи данных SOAP, который не является человеко-ориентированным и достаточно трудно читаем. Есть коммерческие словари, такие как CommerceML, xCBL и cXML которые используются для передачи данных, ориентированных на торговую деятельность, эти словари включают в себя описание системы заказов, поставщиков, продуктов и прочее. Обычно, описывая какой-либо документ, человек для себя придумывает некоторый словарь, который потом описывается посредством DTD или просто объясняется «на пальцах» заинтересованным лицам. Одним из словарей, получивших широкое распространение, является FB2 — словарь, описывающий формат книги, со всевозможными сносками, цитатами, даже картинками. Как выглядит xml-документ?Если Вы знакомы с HTML, изучение XML не потребует от вас особых усилий. Хотя XML, безусловно, сильно отличается по своим возможностям и предназначению от языка гипертекстовой разметки, оба эти языка являются подмножествами SGML, и, следовательно, наследуют его базовые принципы. Структура документа Простейший XML- документ может выглядеть так, как это показано в Примере 1 <?xml version="1.0"?> <list_of_items> <item id="1"><first/>Первый</item> <item id="2">Второй <sub_item>подпункт 1</sub_item></item> <item id="3">Третий</item> <item id="4"><last/>Последний</item> </list_of_items> Также, как и в HTML, инструкции, заключенные в угловые скобки называются тэгами и служат для разметки основного текста документа. В XML существуют открывающие, закрывающие и пустые тэги (в HTML понятие пустого тэга тоже существует, но специального его обозначения не требуется). Тело документа XML состоит из элементов разметки (markup) и непосредственно содержимого документа - данных (content). XML - тэги предназначены для определения элементов документа, их атрибутов и других конструкций языка. Более подробно о типах применяемой в документах разметки мы поговорим чуть позже. Любой XML- документ должен всегда начинаться с инструкции <?xml?>, внутри которой также можно задавать номер версии языка, номер кодовой страницы и другие параметры, необходимые программе-анализатору в процессе разбора документа studfiles.net c# - Открываю XML в браузере и выходит пустая белая страница - XML/XSLКак я понимаю при запуске xml файла в браузере (Google Сhrome) должна формироваться html страничка. Но в итоге появляется просто белый экран. Где ошибка? <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="xslt1.xsl"?> <?xml-stylesheet type="text/css" href="style.css"?> <NewDataSet> <izdelia> <material>сталь</material> <number>1</number> <length>1</length> <width>2</width> <heigth>3</heigth> </izdelia> <izdelia> <material>дерево</material> <number>2</number> <length>2</length> <width>3</width> <heigth>4</heigth> </izdelia> <izdelia> <material>пластмасса</material> <number>3</number> <length>4</length> <width>5</width> <heigth>6</heigth> </izdelia> <izdelia> <material>ольха</material> <number>10</number> <length>100</length> <width>26</width> <heigth>89</heigth> </izdelia> <izdelia> <material>дуб</material> <number>10</number> <length>1000</length> <width>26</width> <heigth>89</heigth> </izdelia> <izdelia> <material>дуб</material> <number>10</number> <length>1000</length> <width>26</width> <heigth>89</heigth> </izdelia> <izdelia> <material>дуб</material> <number>10</number> <length>1000</length> <width>26</width> <heigth>89</heigth> </izdelia> <izdelia> <material>дубо</material> <number>10</number> <length>1000</length> <width>26</width> <heigth>89</heigth> </izdelia> <izdelia> <material>дуба</material> <number>10</number> <length>1000</length> <width>26</width> <heigth>89</heigth> </izdelia> <izdelia> <material>дубо</material> <number>10</number> <length>1000</length> <width>26</width> <heigth>89</heigth> </izdelia> <izdelia> <material>дуба</material> <number>10</number> <length>1000</length> <width>26</width> <heigth>89</heigth> </izdelia> <izdelia> <material>сталь</material> <number>1</number> <length>1</length> <width>2</width> <heigth>3</heigth> </izdelia> <izdelia> <material>дерево</material> <number>2</number> <length>2</length> <width>3</width> <heigth>4</heigth> </izdelia> <izdelia> <material>пластмасса</material> <number>3</number> <length>4</length> <width>5</width> <heigth>6</heigth> </izdelia> <izdelia> <material>ольха</material> <number>10</number> <length>100</length> <width>26</width> <heigth>89</heigth> </izdelia> <izdelia> <material>дуб</material> <number>10</number> <length>1000</length> <width>26</width> <heigth>89</heigth> </izdelia> <izdelia> <material>дуб</material> <number>10</number> <length>1000</length> <width>26</width> <heigth>89</heigth> </izdelia> <izdelia> <material>дуб</material> <number>10</number> <length>1000</length> <width>26</width> <heigth>89</heigth> </izdelia> <izdelia> <material>дубо</material> <number>10</number> <length>1000</length> <width>26</width> <heigth>89</heigth> </izdelia> <izdelia> <material>дуба</material> <number>10</number> <length>1000</length> <width>26</width> <heigth>89</heigth> </izdelia> <izdelia> <material>дубо</material> <number>10</number> <length>1000</length> <width>26</width> <heigth>89</heigth> </izdelia> <izdelia> <material>дуба</material> <number>10</number> <length>1000</length> <width>26</width> <heigth>89</heigth> </izdelia> <izdelia> <material>сталь</material> <number>1</number> <length>1</length> <width>2</width> <heigth>3</heigth> </izdelia> <izdelia> <material>дерево</material> <number>2</number> <length>2</length> <width>3</width> <heigth>4</heigth> </izdelia> <izdelia> <material>пластмасса</material> <number>3</number> <length>4</length> <width>5</width> <heigth>6</heigth> </izdelia> <izdelia> <material>ольха</material> <number>10</number> <length>100</length> <width>26</width> <heigth>89</heigth> </izdelia> <izdelia> <material>дуб</material> <number>10</number> <length>1000</length> <width>26</width> <heigth>89</heigth> </izdelia> <izdelia> <material>дуб</material> <number>10</number> <length>1000</length> <width>26</width> <heigth>89</heigth> </izdelia> <izdelia> <material>дуб</material> <number>10</number> <length>1000</length> <width>26</width> <heigth>89</heigth> </izdelia> <izdelia> <material>дубо</material> <number>10</number> <length>1000</length> <width>26</width> <heigth>89</heigth> </izdelia> <izdelia> <material>дуба</material> <number>10</number> <length>1000</length> <width>26</width> <heigth>89</heigth> </izdelia> <izdelia> <material>дубо</material> <number>10</number> <length>1000</length> <width>26</width> <heigth>89</heigth> </izdelia> <izdelia> <material>дуба</material> <number>10</number> <length>1000</length> <width>26</width> <heigth>89</heigth> </izdelia> <izdelia> <material>сталь</material> <number>1</number> <length>1</length> <width>2</width> <heigth>3</heigth> </izdelia> <izdelia> <material>дерево</material> <number>2</number> <length>2</length> <width>3</width> <heigth>4</heigth> </izdelia> <izdelia> <material>пластмасса</material> <number>3</number> <length>4</length> <width>5</width> <heigth>6</heigth> </izdelia> <izdelia> <material>ольха</material> <number>10</number> <length>100</length> <width>26</width> <heigth>89</heigth> </izdelia> <izdelia> <material>дуб</material> <number>10</number> <length>1000</length> <width>26</width> <heigth>89</heigth> </izdelia> <izdelia> <material>дуб</material> <number>10</number> <length>1000</length> <width>26</width> <heigth>89</heigth> </izdelia> <izdelia> <material>дуб</material> <number>10</number> <length>1000</length> <width>26</width> <heigth>89</heigth> </izdelia> <izdelia> <material>дубо</material> <number>10</number> <length>1000</length> <width>26</width> <heigth>89</heigth> </izdelia> <izdelia> <material>дуба</material> <number>10</number> <length>1000</length> <width>26</width> <heigth>89</heigth> </izdelia> <izdelia> <material>дубо</material> <number>10</number> <length>1000</length> <width>26</width> <heigth>89</heigth> </izdelia> <izdelia> <material>дуба</material> <number>10</number> <length>1000</length> <width>26</width> <heigth>89</heigth> </izdelia> </NewDataSet> <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <h3>My Collection</h3> <table border="1"> <tr bgcolor="#9acd32"> <td>MATERIAL</td> <td>NUMBERS</td> <td>L</td> <td>W</td> <td>H</td> </tr> <xsl:for-each select="NewDataSet/izdelia"> <tr> <td><xsl:value-of select="material"/></td> <td><xsl:value-of select="number"/></td> <td><xsl:value-of select="length"/></td> <td><xsl:value-of select="width"/></td> <td><xsl:value-of select="heigth"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet> NewDataSet { display: table; background: center; /* Цвет фона таблицы */ color: green; /* Цвет текста */ border-spacing: 1px; /* Расстояние между ячейками */ } izdelia { display: table-row; line-height: 30px; border-collapse: inherit; } material, number,length, width, heigth { display: table-cell; font-family: Arial, sans-serif; color: red; }ru.stackoverflow.com Отображение 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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 | namespace WindowsFormsApplication22 { public partial class Form1 : Form { /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// [DllImport("kernel32.dll", SetLastError = true)] static extern System.IntPtr OpenFileMapping(uint dwDesiredAccess, bool bInheritHandle, string lpName); [DllImport("kernel32.dll", SetLastError = true)] static extern IntPtr MapViewOfFile(IntPtr hFileMappingObject, uint dwDesiredAccess, uint dwFileOffsetHigh, uint dwFileOffsetLow, uint dwNumberOfBytesToMap); [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)] public static extern IntPtr CreateFileMapping( IntPtr hFile, IntPtr lpFileMappingAttributes, uint flProtect, uint dwMaximumSizeHigh, uint dwMaximumSizeLow, string lpName); [Flags] enum FileMapProtection : uint { PageReadonly = 0x02, PageReadWrite = 0x04, PageWriteCopy = 0x08, PageExecuteRead = 0x20, PageExecuteReadWrite = 0x40, SectionCommit = 0x8000000, SectionImage = 0x1000000, SectionNoCache = 0x10000000, SectionReserve = 0x4000000, } const UInt32 STANDARD_RIGHTS_REQUIRED = 0x000F0000; const UInt32 SECTION_QUERY = 0x0001; const UInt32 SECTION_MAP_WRITE = 0x0002; const UInt32 SECTION_MAP_READ = 0x0004; const UInt32 SECTION_MAP_EXECUTE = 0x0008; const UInt32 SECTION_EXTEND_SIZE = 0x0010; const UInt32 SECTION_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED | SECTION_QUERY | SECTION_MAP_WRITE | SECTION_MAP_READ | SECTION_MAP_EXECUTE | SECTION_EXTEND_SIZE); const UInt32 FILE_MAP_ALL_ACCESS = SECTION_ALL_ACCESS; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// reg r;// класс для выделения виртуальной памяти в процессе, код в спойлере System.IntPtr g_hMapFile; public Form1() { InitializeComponent(); g_hMapFile = OpenFileMapping(FILE_MAP_ALL_ACCESS, false, "AYE"); if (g_hMapFile == IntPtr.Zero) { MessageBox.Show("файла нет, создаем"); g_hMapFile = CreateFileMapping(new IntPtr(-1), (IntPtr)null, (uint)FileMapProtection.PageReadWrite, 0, 1 * 1024 * 1024, "AYE"); } else MessageBox.Show("файл уже создан другим экземпляром программы)"); if(g_hMapFile==IntPtr.Zero) { MessageBox.Show("ошибка"); } r = new reg(1024 * 1024);//класс для выделения памяти в процессе r.sadress = MapViewOfFile(g_hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, 0);//проблемная строка которую надо как то использовать по другому } private void button2_Click(object sender, EventArgs e) { //тут предполагаю что надо как то вызвать MapViewOfFile //достаем строку из памяти процесса UnicodeEncoding uniEncoding = new UnicodeEncoding(); byte[] b=new byte[1024*1024]; Marshal.Copy(r.sadress, b, 0, 1024 * 1024); string s = uniEncoding.GetString(b); MessageBox.Show(s); } private unsafe void button1_Click(object sender, EventArgs e) { //запись в память процесса string s = textBox1.Text; UnicodeEncoding uniEncoding = new UnicodeEncoding(); byte[] b= uniEncoding.GetBytes(s); Marshal.Copy(b,0, r.sadress, b.Length); //тут предполагаю что надо как то вызвать MapViewOfFile } } } |
|
||||||||||||||||||||||||||||||||||||
|
|