Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Прочитать XML-файл локально (https://javascript.ru/forum/misc/28756-prochitat-xml-fajjl-lokalno.html)

oyaebunterkrah 01.06.2012 19:37

Да, максимум 500-600 строк.

Deff 02.06.2012 00:57

oyaebunterkrah,
Собственно посколь завис пока на window.name - пробуйте использовать сохранение в нём...

В отличие от куков, не страдает от очистки кеша

А распарсить текст достаточно просто, главное иметь текст страницы

FINoM 02.06.2012 01:20

Можно попробовать вставить iframe с этим xml файлом и получить содержимое.
(Кстати, почему аякс распространился тогда, когда появился XHR? Можно было ведь делать тупо на айфрейме.)

Deff 02.06.2012 01:37

Цитата:

Сообщение от FINoM
Можно попробовать вставить iframe с этим xml файлом и получить содержимое.

FINoM,
Парс в jQuery две строки, хотя нун на код глянуть

oyaebunterkrah 02.06.2012 16:54

решил хранить структурированный xml в каком-нибудь тэге прям в html, например:

<p id="data">
	<?xml version="1.0" encoding="utf-8" ?>
	<RecentTutorials>
		<Tutorial author="The Reddest">
			<Title>Silverlight and the Netflix API</Title>
			<Categories>
				<Category>Tutorials</Category>
				<Category>Silverlight 2.0</Category>
				<Category>Silverlight</Category>
				<Category>C#</Category>
				<Category>XAML</Category>
			</Categories>
			<Date>1/13/2009</Date>
		</Tutorial>
	</RecentTutorials>
</p>


а потом делать:

var xmlData = $(#data).html();
var xmlDOM = $.parseXML(xmlData);
$(xmlDOM).find(...);

но, команда $(#data).html() почему-то ломает структуру xml, после чего $(xmlDOM).find(...) ничего не может найти.

а вот если делать так:

var xmlString = '<?xml version="1.0" encoding="utf-8" ?> <RecentTutorials> <Tutorial author="The Reddest"> <Title>Silverlight and the Netflix API</Title> <Categories> <Category>Tutorials</Category> <Category>Silverlight 2.0</Category> <Category>Silverlight</Category> <Category>C#</Category> <Category>XAML</Category> </Categories> <Date>1/13/2010</Date> </Tutorial> <Tutorial author="The Hairiest"> <Title>Cake PHP 4 - Saving and Validating Data</Title> <Categories> <Category>Tutorials</Category> <Category>CakePHP</Category> <Category>PHP</Category> </Categories> <Date>1/12/2009</Date> </Tutorial> <Tutorial author="The Tallest"> <Title>Silverlight 2 - Using initParams</Title> <Categories> <Category>Tutorials</Category> <Category>Silverlight 2.0</Category> <Category>Silverlight</Category> <Category>C#</Category> <Category>HTML</Category> </Categories> <Date>1/6/2009</Date> </Tutorial> <Tutorial author="The Fattest"> <Title>Controlling iTunes with AutoHotkey</Title> <Categories> <Category>Tutorials</Category> <Category>AutoHotkey</Category> </Categories> <Date>12/12/2008</Date> </Tutorial> </RecentTutorials>';

var xmlDOM = $.parseXML(xmlString );

т.е. запихнуть всё в одну строку без пробелов и табуляций, то парсится всё нормально, и поиск работает.

хотелось бы узнать, насколько логично так делать, и, если это приемлемый вариант, то каким образом можно получить содержимое тэга <p> и убрать из него все пробелы и табуляции, для дальнейшей обработки?

Deff 02.06.2012 17:27

oyaebunterkrah,
Обычно трюк такой:
<div id=Storage></div>


<script type="text/javascript">
var Data='\n\
	<?xml version="1.0" encoding="utf-8" ?>\n\
	<RecentTutorials>\n\
		<Tutorial author="The Reddest">\n\
			<Title>Silverlight and the Netflix API</Title>\n\
			<Categories>\n\
				<Category>Tutorials</Category>\n\
				<Category>Silverlight 2.0</Category>\n\
				<Category>Silverlight</Category>\n\
				<Category>C#</Category>\n\
				<Category>XAML</Category>\n\
			</Categories>\n\
			<Date>1/13/2009</Date>\n\
		</Tutorial>\n\
';

*!*
var Storage=$("#Storage").remove()
Storage.html(Data);
*/!*
alert(Storage.html())
</script>

oyaebunterkrah 02.06.2012 18:13

а что даёт "\n\"?

Deff 02.06.2012 18:17

oyaebunterkrah,
Да это не обязательно - Вы же Data подгружаете - а я запихнул её в строковую переменную

Эт перевод строки и указание на неразрывность строки

Deff 02.06.2012 18:26

oyaebunterkrah,
В принципе аналогичную методу можно проделать и с открытием модального окна и запихиванием туда кода:
popup1 = window.open("","popData","height=1,width=1")
popup1.document.write(Data)
popup1.document.close()
C последующим считыванием

oyaebunterkrah 02.06.2012 19:53

ну ок. а не подскажешь, как можно работать со считанным xml? я имею в виду добавлять, удалять, редактировать узлы..? может, библиотечка есть уже какая..?


Часовой пояс GMT +3, время: 13:10.