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

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

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.07.2011, 11:55   #1
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию XmlDocument, кто тупит, он или я?

хочу банально проверить можно ли сайт разобрать как Xml(XHTML естественно), сохранил страницу на диск, исправил одну ошибочку там(один тэг не самозакрывающимся был, хотя должен был быть(проверял по валидатору w3)), далее пытаюсь загрузить в XmlDocument, итог, тишина, программа будто висит(хотя по диспетчеру она действительно висит)
Код:
using System;
using System.Net;
using System.Xml;
using System.IO;

namespace test2
{
	class Program
	{
		public static void Main(string[] args)
		{
			
			//string url="http://www.pwdatabase.com/ru/lvl/0-9";
			//WebClient wc=new WebClient();
			//wc.DownloadFile(url,"test.xml");
			TextReader tr=new StreamReader("test.xml",System.Text.Encoding.UTF8,false);//гружу уже исправленный, потому и не с инета
			XmlDocument xml=new XmlDocument();
			xml.Load(tr);//виснем тут
			Console.Write("Press any key to continue . . . ");
			Console.ReadKey(true);
		}
	}
}
может я чтото не так делаю?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.07.2011, 12:13   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

через 15 минут раздумий оно выдало исключение...
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.07.2011, 12:33   #3
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Код:
TextReader tr=new StreamReader
Вот это настораживает, хотя не знаю.
Код:
xml.Load(tr);//виснем тут
Ну...Можно же так вроде:
Код:
xml.LoadXml(tr);
_-Re@l-_ вне форума Ответить с цитированием
Старый 14.07.2011, 13:04   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

вот текст исключения:
Цитата:
Необработанное исключение: System.Net.WebException: Время ожидания операции исте
кло.
в System.Net.ConnectStream.Read(Byte[] buffer, Int32 offset, Int32 size)
в System.Xml.XmlCachedStream..ctor(Ur i uri, Stream stream)
в System.Xml.XmlDownloadManager.GetNo nFileStream(Uri uri, ICredentials creden
tials, IWebProxy proxy, RequestCachePolicy cachePolicy)
в System.Xml.XmlDownloadManager.GetSt ream(Uri uri, ICredentials credentials,
IWebProxy proxy, RequestCachePolicy cachePolicy)
в System.Xml.XmlUrlResolver.GetEntity (Uri absoluteUri, String role, Type ofOb
jectToReturn)
в System.Xml.XmlTextReaderImpl.OpenAn dPush(Uri uri)
в System.Xml.XmlTextReaderImpl.PushEx ternalEntityOrSubset(String publicId, St
ring systemId, String baseUriStr, Uri& baseUri, String entityName)
в System.Xml.XmlTextReaderImpl.PushEx ternalEntity(IDtdEntityInfo entity)
в System.Xml.XmlTextReaderImpl.DtdPar serProxy_PushEntity(IDtdEntityInfo entit
y, Int32& entityId)
в System.Xml.XmlTextReaderImpl.DtdPar serProxy.System.Xml.IDtdParserAdapt er.Pu
shEntity(IDtdEntityInfo entity, Int32& entityId)
в System.Xml.DtdParser.HandleEntityRe ference(XmlQualifiedName entityName, Boo
lean paramEntity, Boolean inLiteral, Boolean inAttribute)
в System.Xml.DtdParser.GetToken(Boole an needWhiteSpace)
в System.Xml.DtdParser.ParseSubset()
в System.Xml.DtdParser.ParseExternalS ubset()
в System.Xml.DtdParser.ParseInDocumen tDtd(Boolean saveInternalSubset)
в System.Xml.DtdParser.Parse(Boolean saveInternalSubset)
в System.Xml.DtdParser.System.Xml.IDt dParser.ParseInternalDtd(IDtdParser Adapt
er adapter, Boolean saveInternalSubset)
в System.Xml.XmlTextReaderImpl.ParseD td()
в System.Xml.XmlTextReaderImpl.ParseD octypeDecl()
в System.Xml.XmlTextReaderImpl.ParseD ocumentContent()
в System.Xml.XmlTextReaderImpl.Read()
в System.Xml.XmlLoader.Load(XmlDocume nt doc, XmlReader reader, Boolean preser
veWhitespace)
в System.Xml.XmlDocument.Load(XmlRead er reader)
в System.Xml.XmlDocument.Load(TextRea der txtReader)
в test2.Program.Main(String[] args) в e:\Documents and Settings\Феникс\Мои до
кументы\SharpDevelop Projects\test2\test2\Program.cs:стр ока 26
Для продолжения нажмите любую клавишу . . .
Цитата:
xml.LoadXml(tr);
этот метод для загрузки из строки, а не с потока, хотя и можно попытатся через него.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.07.2011, 14:02   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
[using System;
using System.Net;
using System.Xml;
using System.IO;

namespace test2
{
	class Program
	{
		public static void Main(string[] args)
		{
			
			//string url="http://www.pwdatabase.com/ru/lvl/0-9";
			//WebClient wc=new WebClient();
			//wc.DownloadFile(url,"test.xml");
			TextReader tr=new StreamReader("test.xml",System.Text.Encoding.UTF8,false);
			string s=tr.ReadToEnd();
			tr.Close();
			XmlDocument xml=new XmlDocument();
			xml.LoadXml(s);
			Console.Write("Press any key to continue . . . ");
			Console.ReadKey(true);
		}
	}
}
так вроде работает, но все равно очень долго, в чем может быть причина?
Цитата:
Вот это настораживает, хотя не знаю.
TextReader абстрактный класс, StreamReader его потомок.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.07.2011, 14:08   #6
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 822
По умолчанию

Попробуй так.
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Старый 14.07.2011, 14:36   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

это уж мне проще через string.IndexOf парсить тогда...
ибо теряется вся выгода парсинга как XML.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 14.07.2011 в 14:41.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.07.2011, 15:45   #8
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Пепел Феникса, может все же что-то со структурой xml...Ибо код рабочий - только что у себя проверил...
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 14.07.2011, 16:05   #9
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Цитата:
так вроде работает, но все равно очень долго, в чем может быть причина?
Дело в XmlDocument. Это очень медленный класс.
_-Re@l-_ вне форума Ответить с цитированием
Старый 14.07.2011, 18:12   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Пепел Феникса, может все же что-то со структурой xml...Ибо код рабочий - только что у себя проверил...
xhtml файл 79,8КБ где то, ссылка в коде есть(но он сохранен и исправлено закрытие тэга img)

короче странно другое, почему то программа именно ничего не делает потом вылетает ошибка таймаута.(удалось лишь один раз загрузить)

может дело в SharpDevelop, попробую в студии позже.

не, хрен там, время ожидания превышено и все.
попробую позже, может сейчас мощности не хватает...

а есть какие нить иные классы для обработки XML?(очень желательно с поддержкой XPath)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 14.07.2011 в 19:53.
Пепел Феникса вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кто тупит скрипт или сервер? AvernuS PHP 10 07.07.2011 18:21
XmlDocument и теги MAcK Общие вопросы Delphi 2 20.10.2010 12:12
XMLDocument Miningo Общие вопросы Delphi 3 07.08.2009 14:59
XMLDocument AidarBik Общие вопросы Delphi 19 18.02.2009 21:41
XMLDocument Sanek777 Общие вопросы Delphi 2 04.11.2008 16:15