Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Регистрация Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 17.01.2012, 11:10
Srednas вне форума Посмотреть профиль Отправить личное сообщение для Srednas Найти все сообщения от Srednas
  № 1  
Ответить с цитированием
Srednas

Регистрация: Nov 2010
Сообщений: 430
Question Добавление данных в XML

Здравствуйте.

Нужно добавить в XML некоторые данные и сохранить в измененном виде.

Код AS3:
var xml:XML = getXML();
 
var ns:Namespace = new Namespace("ps", "http://www.example.ru");
xml.addNamespace(ns);
 
var s:String = new String();
s += "<ps:GeoInfo>";
	s += "<ps:Geo>";
		s += "<ps:GeoItem Latitude='"+37.234087+"' Longitude='"+74.88986+"+"' />";
		s += "<ps:GeoItem Latitude='"+38.244042+"' Longitude='"+75.215684+"+"' />";
	s += "</ps:Geo>";
s += "</ps:GeoInfo>";
 
xml.insertChildBefore(null, XML(s));
вылезает ошибка:
Код:
The prefix "ps" for element "GeoInfo" is not bound.
Подскажите как вставить правильно новые данные в XML?

Старый 17.01.2012, 12:17
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Код AS3:
var xml:XML = <foo xmlns:ps="http://www.example.ru"/>;
 
xml.* = 
	<ps:GeoInfo xmlns:ps="http://www.example.ru"> 
		<ps:Geo>
			<ps:GeoItem Latitude={37.234087} Longitude={74.88986}/>
			<ps:GeoItem Latitude={38.244042} Longitude={75.215684}/>
		</ps:Geo>
	</ps:GeoInfo>
+ xml.*;
trace(xml);
ЗЫ. Не пишите new String() - это выражение не имеет никакого смысла. Строки в AS не мутабельные, а для пустой строки есть константа - "".
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 17.01.2012 в 12:26.
Старый 17.01.2012, 12:49
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 3  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
Код AS3:
var test:XML = <test/>;
var ns:Namespace = new Namespace("ps", "http://www.example.ru");
default xml namespace = ns;
test.addNamespace(ns);
test.appendChild(<GeoInfo/>);
test.GeoInfo.appendChild(<Geo />);
test.GeoInfo.Geo.appendChild(< item Latitude = "37.234087" Longitude="74.88986"/>);
test.GeoInfo.Geo.appendChild(< item Latitude = "38.244042" Longitude="75.215684"/>);
trace( test.toXMLString() );

Старый 18.01.2012, 08:28
Srednas вне форума Посмотреть профиль Отправить личное сообщение для Srednas Найти все сообщения от Srednas
  № 4  
Ответить с цитированием
Srednas

Регистрация: Nov 2010
Сообщений: 430
Цитата:
Сообщение от silin Посмотреть сообщение
Код AS3:
var test:XML = <test/>;
var ns:Namespace = new Namespace("ps", "http://www.example.ru");
default xml namespace = ns;
test.addNamespace(ns);
test.appendChild(<GeoInfo/>);
test.GeoInfo.appendChild(<Geo />);
test.GeoInfo.Geo.appendChild(< item Latitude = "37.234087" Longitude="74.88986"/>);
test.GeoInfo.Geo.appendChild(< item Latitude = "38.244042" Longitude="75.215684"/>);
trace( test.toXMLString() );
Проблема, по большей части, при добавлении новой информации в старую, открытую для изменения XML.
Почему-то все равно ругается на префикс
Код AS3:
test.appendChild(<ps: GeoInfo/>);
Ругается:
Код:
The prefix "ps" for element "GeoInfo" is not bound.


Последний раз редактировалось Srednas; 18.01.2012 в 08:31.
Старый 18.01.2012, 10:04
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 5  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
ага, т.е. проблема в том, что невозможно создать нод в неймспейсе литералом,
но непонятно почему не подходит создавать его из-под <default xml namespace>
Код AS3:
var ns:Namespace = new Namespace("ps", "http://www.example.ru");
var node:XML;
try
{
	node=<ps:GeoInfo/>; // проблема
}catch (error:Error)
{
	trace( "err : " + error.message );
	default xml namespace = ns;
	node=<GeoInfo/>; // нет проблемы
}
trace( "node : " + node.toXMLString() );

Старый 18.01.2012, 11:54
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 6  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Так а чем мой вариант не подошел?
__________________
Hell is the possibility of sanity

Старый 18.01.2012, 13:10
Srednas вне форума Посмотреть профиль Отправить личное сообщение для Srednas Найти все сообщения от Srednas
  № 7  
Ответить с цитированием
Srednas

Регистрация: Nov 2010
Сообщений: 430
Цитата:
Сообщение от wvxvw Посмотреть сообщение
Так а чем мой вариант не подошел?
Подскажите как его добавить в существующую XML?
Т.е. где-то лежит XML, её нужно открыть, прочитать из неё нужные данные, обработать и добавить сформированные новые данные.

Например, первоначальная XML:
Код:
<svg version="1.1" xmlns:ps="http://www.example.ru" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="1016.195px" xml:space="preserve">
<path fill="#C4C4C4"d="M313.098,99.213l-9.5-14l9.5-12.5l16.5,3.5l8,13.5l-17,9.5H313.098z"/>
</svg>
После обработки нужно новые данные записать в файл, чтобы получилось:
Код:
<svg version="1.1" xmlns:ps="http://www.example.ru" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="1016.195px" xml:space="preserve">
<path fill="#C4C4C4"d="M313.098,99.213l-9.5-14l9.5-12.5l16.5,3.5l8,13.5l-17,9.5H313.098z"/>
<ps:GeoInfo xmlns:ps="http://www.example.ru"> 
	<ps:Geo>
		<ps:GeoItem Latitude={37.234087} Longitude={74.88986}/>
		<ps:GeoItem Latitude={38.244042} Longitude={75.215684}/>
	</ps:Geo>
</ps:GeoInfo>
</svg>
В вашем варианте, вроде проще, но добавляется еще
Код:
<... xmlns:ps="http://www.example.ru">
он тут не нужен, т.к. уже будет в <svg> (выделен красным). Как это можно сделать?


Последний раз редактировалось Srednas; 18.01.2012 в 13:13.
Старый 18.01.2012, 20:35
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 8  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Код AS3:
package tests 
{
	//{ imports
	import flash.display.Sprite;
	//}
 
	/**
	 * XMLAppendExample class.
	 * @author wvxvw
	 * @langVersion 3.0
	 * @playerVersion 10.1
	 */
	public class XMLAppendExample extends Sprite
	{
		//--------------------------------------------------------------------------
		//
		//  Constructor
		//
		//--------------------------------------------------------------------------
 
		/**
		 * Creates new <code>XMLAppendExample</code>.
		 */
		public function XMLAppendExample() 
		{
			super();
			this.example();
		}
 
		//--------------------------------------------------------------------------
		//
		// Private methods
		//
		//--------------------------------------------------------------------------
 
		private function example():void 
		{
			var source:XML = 
			<svg version="1.1" 
				xmlns:ps="http://www.example.ru" 
				xmlns="http://www.w3.org/2000/svg" 
				xmlns:xlink="http://www.w3.org/1999/xlink" 
				x="0px" y="0px" width="1016.195px" 
				xml:space="preserve"
				>
				<path fill="#C4C4C4"
					d="M313.098,99.213l-9.5-14l9.5-12.5l16.5,3.5l8,13.5l-17,9.5H313.098z"/>
			</svg>;
 
			source.* = <ps:GeoInfo xmlns:ps="http://www.example.ru"> 
				<ps:Geo>
					<ps:GeoItem Latitude={37.234087} Longitude={74.88986}/>
					<ps:GeoItem Latitude={38.244042} Longitude={75.215684}/>
				</ps:Geo>
			</ps:GeoInfo> + source.*;
			trace(source.toXMLString());
			/*
			<svg version="1.1" x="0px" y="0px" width="1016.195px" aaa:space="preserve" xmlns:ps="http://www.example.ru" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:aaa="http://www.w3.org/XML/1998/namespace">
			  <ps:GeoInfo>
				<ps:Geo>
				  <ps:GeoItem Latitude="37.234087" Longitude="74.88986"/>
				  <ps:GeoItem Latitude="38.244042" Longitude="75.215684"/>
				</ps:Geo>
			  </ps:GeoInfo>
			  <path fill="#C4C4C4" d="M313.098,99.213l-9.5-14l9.5-12.5l16.5,3.5l8,13.5l-17,9.5H313.098z"/>
			</svg>*/
		}
	}
}
__________________
Hell is the possibility of sanity

Создать новую тему Ответ Часовой пояс GMT +4, время: 10:32.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
namespace , xml
Опции темы
Опции просмотра

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

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


 


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


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2022, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.