Ошибка при загрузке файла xml

Проблемы

При использовании метода Load XMLDOM объектной модели для синхронной загрузки документа язык XML (Extensible Markup) на клиентском компьютере через SSL-подключение, метод завершается неудачей с ошибкой 0x800c0007 и INET_E_DATA_NOT_AVAILABLE возвращают значение.

Причина

Эта проблема возникает, когда файл не кэшируется на клиентском компьютере. Существует несколько причин, почему, файл не может кэшироваться.

  • Пользователь выбирает флажок не сохранять зашифрованные страницы на диск , на вкладке « Дополнительно » диалогового окна « Свойства обозревателя ».

  • Сервер отправляет Pragma:no-кэш или кэш-элемента управления: no-заголовков кэша.

  • Если вы используете Microsoft Internet Information Server (IIS), параметр срока действия содержимого имеет значение истекает немедленно, который отправляет заголовки нет-cache, а также истекает: 0 HTTP-заголовок.

Решение

Чтобы устранить эту проблему, выполните следующие действия:

  1. В обозревателе Internet Explorer в меню Сервис пункт Свойства обозревателя. На вкладке « Дополнительно » снимите флажок « не сохранять зашифрованные страницы на диск ».

  2. Убедитесь, что сервер не отправляет заголовки нет-cache.

  3. В службах IIS в оснастке консоли управления (MMC) щелкните правой кнопкой мыши файл XML. На вкладке Заголовки HTTP отключите параметр срока действия содержимого.

Статус

Корпорация Майкрософт подтверждает, что это является ошибкой в продуктах Майкрософт, перечисленных в начале данной статьи.

Дополнительная информация

Действия для воспроизведения поведения

  1. В обозревателе Internet Explorer в меню Сервис пункт Свойства обозревателя. На вкладке « Дополнительно » снимите флажок « не сохранять зашифрованные страницы на диск ».

  2. Создайте HTML-файл с именем Test.html, а затем вставьте следующий код:

    <HTML><BODY><INPUT type=button onclick=loadmyxml() value="Load XML"><SCRIPT>function loadmyxml(){var XMLObj = new ActiveXObject("Microsoft.XMLDOM")XMLObj.async = false;XMLObj.load('https://localhost/secure/test.xml'); if (XMLObj.parseError.errorCode != 0)alert("Error loading XML file : " + XMLObj.parseError.reason);elsealert (XMLObj.xml);}</script></BODY></HTML>

  3. Сохраните Test.html в защищенной папке на веб-сервере.

  4. Создайте новый XML-файл с именем Test.xml, а затем вставьте следующий код:

    <?xml version='1.0' ?><BOOKLIST><BOOK><CATEGORY>Fiction</CATEGORY><TITLE>The Snow Leopard</TITLE><AUTHOR>Desmond Bagley</AUTHOR></BOOK></BOOKLIST>

  5. Сохраните Test.xml защищенной папке на веб-сервере.

  6. В обозревателе Internet Explorer перейдите к Test.html и нажмите кнопку Загрузить XML. Появляется сообщение об ошибке 0x800c0007.

Ссылки

Дополнительные сведения о XML см на Microsoft Developer Network (MSDN):

http://msdn.microsoft.com/xml/default.aspДополнительные сведения о разработке веб-приложений для Microsoft Internet Explorer посетите следующий веб-узел Майкрософт:

http://msdn.microsoft.com/ie/
http://support.microsoft.com/iep

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

В сообществах можно задавать вопросы и отвечать на них, отправлять отзывы и консультироваться с экспертами разных профилей.

I am trying to send an XML file to a Webservice.

Here’s the code that loads the XML and saves it to the stream:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(xmlFilePath);

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(mesServiceURL);

request.Method = "POST";
request.ContentType = "application/xml";
Stream request_stream = request.GetRequestStream();
xmlDoc.Save(request_stream);
request_stream.Close();

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream r_stream = response.GetResponseStream();
StreamReader response_stream = new
StreamReader(r_stream, System.Text.Encoding.GetEncoding("utf-8"));
string sOutput = response_stream.ReadToEnd();

The request_stream object’s length property has this :

'request_stream.Length' threw an exception of type 'System.NotSupportedException'

On disk the XML is 3 kb so it’s not huge.

So, how do I solve this?

Thanks in advance.

ak1906

0 / 0 / 0

Регистрация: 21.04.2021

Сообщений: 53

1

21.06.2023, 11:59. Показов 329. Ответов 3

Метки memorystream, stream, xml, xmldocument (Все метки)


Студворк — интернет-сервис помощи студентам

Добрый день! Помогите, пожалуйста, понять, что не так.
Есть код:

C#
1
2
3
4
5
6
7
8
9
string path = "Doc.xml";
XmlDocument xDoc = new XmlDocument();
MemoryStream inMemoryCopy = new MemoryStream();
using (FileStream fs = File.OpenRead(path))
{
    fs.CopyTo(inMemoryCopy);
}
xDoc.Load(inMemoryCopy);
XmlElement xRoot = xDoc.DocumentElement;

На строчке

C#
1
xDoc.Load(inMemoryCopy);

пишет, что Unhandled exception. System.Xml.XmlException: Root element is missing., хотя документ сам валидный. Подскажите, пожалуйста, что не так. Спасибо!



0



AndreyVorobey

2745 / 1655 / 878

Регистрация: 14.04.2015

Сообщений: 5,637

21.06.2023, 13:15

2

Лучший ответ Сообщение было отмечено OwenGlendower как решение

Решение

ak1906, а к чему это нагромождение кода?

C#
1
2
XmlDocument xDoc = new XmlDocument();
xDoc.Load("file.xml");



0



OwenGlendower

Администратор

Эксперт .NET

16374 / 12856 / 5068

Регистрация: 17.03.2014

Сообщений: 26,149

Записей в блоге: 1

21.06.2023, 14:23

3

ak1906, как уже правильно ответили манипуляции с потоками здесь не нужны. Если интересует причина ошибки, то она в том что после записи в MemoryStream указатель потока стоит в конце. Если поставить его в начало, то код заработает

C#
7
8
9
}
inMemoryCopy.Position = 0;
xDoc.Load(inMemoryCopy);



0



0 / 0 / 0

Регистрация: 21.04.2021

Сообщений: 53

22.06.2023, 09:49

 [ТС]

4

Всем спасибо за ответы!



0



При загрузке  файла Выгрузка и загрузка xml выходит сообщение

Ошибка доступа к файлу ‘C:\1C_Tools\Выгрузка и загрузка\123.xml’

{ВнешняяОбработка.ВыгрузкаЗагрузкаДанныхXML.МодульОбъекта(162)}:    ЧтениеXML.ОткрытьФайл(ИмяФайла);

{ВнешняяОбработка.ВыгрузкаЗагрузкаДанныхXML.Форма.Форма.Форма(561)}:    РеквизитФормыВЗначение(«Объект»).ВыполнитьЗагрузку(ИмяВременногоФайла);

{ВнешняяОбработка.ВыгрузкаЗагрузкаДанныхXML.Форма.Форма.Форма(540)}:        ЗагрузитьДанныеНаСервере(Адрес, Файл.Расширение);

{ВнешняяОбработка.ВыгрузкаЗагрузкаДанныхXML.Форма.Форма.Форма(254)}:        ЗагрузитьДанныеЗавершение(Истина, АдресФайлаВоВременномХранилище, ИмяФайлаЗагрузки, Неопределено);

по причине:

Ошибка доступа к файлу ‘C:\1C_Tools\Выгрузка и загрузка\123.xml’

что это может быть, если на тестовой базе все нормально выходит

    msm.ru

    Нравится ресурс?

    Помоги проекту!

    [!] Как относитесь к модерированию на этом форуме? Выскажите свое мнение здесь

    >
    Ошибка при загрузке XML файла

    • Подписаться на тему
    • Сообщить другу
    • Скачать/распечатать тему



    Сообщ.
    #1

    ,

      Senior Member

      ****

      Рейтинг (т): 1

      После компиляции при запуске выскакивает ошибка
      Project LexicalAnaliz.exe raised exception class EDOMParseError with message ‘An invalid character was found in text content’ и указывает на строку с кодом

      ExpandedWrap disabled

        _xml->LoadFromXML(OpenDialog1->FileName);

      Вот весь код

      ExpandedWrap disabled

        void __fastcall TForm1::Button1Click(TObject *Sender)

        {

            // Создаем объект типа _di_IXMLDocument

            _di_IXMLDocument _xml = NewXMLDocument();

            if (!OpenDialog1->Execute())

               exit(-1);

            Memo2->Lines->Clear();

            // Загружаем в него файл

            _xml->LoadFromXML(OpenDialog1->FileName);

            //Делаем активным

            _xml->Active = true;

            Memo1->Lines->Add(_xml->ChildNodes->Nodes[WideString(«UNIT»)]->Text);

            _xml->Active = false;

        }

      Содержание XML файла
      <TTC>
      <UNIT DELIMITER=»0″>program</UNIT>
      <UNIT DELIMITER=»0″>input</UNIT>
      <UNIT DELIMITER=»0″>output</UNIT>
      <UNIT DELIMITER=»0″>var</UNIT>
      <UNIT DELIMITER=»0″>intager</UNIT>
      <UNIT DELIMITER=»0″>end</UNIT>
      <UNIT DELIMITER=»0″>begin</UNIT>
      <UNIT DELIMITER=»0″>and</UNIT>
      <UNIT DELIMITER=»0″>or</UNIT>
      <UNIT DELIMITER=»1″>:</UNIT>
      <UNIT DELIMITER=»1″>,</UNIT>
      <UNIT DELIMITER=»1″>;</UNIT>
      <UNIT DELIMITER=»1″>:=</UNIT>
      <UNIT DELIMITER=»1″>.</UNIT>
      <UNIT DELIMITER=»1″><=</UNIT>
      <UNIT DELIMITER=»1″>>=</UNIT>
      <UNIT DELIMITER=»1″>(</UNIT>
      <UNIT DELIMITER=»1″>)</UNIT>
      <UNIT DELIMITER=»1″>+</UNIT>
      <UNIT DELIMITER=»1″>-</UNIT>
      <UNIT DELIMITER=»1″>*</UNIT>
      <UNIT DELIMITER=»1″>/</UNIT>
      </TTC>

      Добавлено
      Как поправить?

      Помогите пожалуйста.

      Добавлено
      Прошу прощения

      вместо

      ExpandedWrap disabled

        Memo2->Lines->Clear();

      Надо

      ExpandedWrap disabled

        Memo1->Lines->Clear();


      Диссидент



      Сообщ.
      #2

      ,

        1. XML-файл должен начинаться строкой вида <?xml version=»1.0″ encoding=»UTF-8″?>
        2.

        Цитата

        <UNIT DELIMITER=»1″><=</UNIT>
        <UNIT DELIMITER=»1″>>=</UNIT>

        В этих двух строках — ошибки. Уточни синтаксис для корректного ввода >= и <= (что-то типа &le, &ge — врать не буду, не помню).
        3. Желательно, чтобы файл был действительно в кодировке UTF-8


        К твоему файлу я добавил заголовок, убрал две проблемные строки и сохранил его в UTF-8. Интернет Эксплорер схавал :yes:

        Цитата

        <?xml version=»1.0″ encoding=»UTF-8″?>
        <TTC>
        <UNIT DELIMITER=»0″>program</UNIT>
        <UNIT DELIMITER=»0″>input</UNIT>
        <UNIT DELIMITER=»0″>output</UNIT>
        <UNIT DELIMITER=»0″>var</UNIT>
        <UNIT DELIMITER=»0″>intager</UNIT>
        <UNIT DELIMITER=»0″>end</UNIT>
        <UNIT DELIMITER=»0″>begin</UNIT>
        <UNIT DELIMITER=»0″>and</UNIT>
        <UNIT DELIMITER=»0″>or</UNIT>
        <UNIT DELIMITER=»1″>:</UNIT>
        <UNIT DELIMITER=»1″>,</UNIT>
        <UNIT DELIMITER=»1″>;</UNIT>
        <UNIT DELIMITER=»1″>:=</UNIT>
        <UNIT DELIMITER=»1″>.</UNIT>
        <UNIT DELIMITER=»1″>(</UNIT>
        <UNIT DELIMITER=»1″>)</UNIT>
        <UNIT DELIMITER=»1″>+</UNIT>
        <UNIT DELIMITER=»1″>-</UNIT>
        <UNIT DELIMITER=»1″>*</UNIT>
        <UNIT DELIMITER=»1″>/</UNIT>
        </TTC>

        Добавлено

        Цитата Диссидент @

        что-то типа &le, &ge — врать не буду, не помню

        Наврал — больше или равно — сами символы надо отделить пробелами от угловых скобок : <UNIT DELIMETER=»1″> >= </UNIT>.


        zuze



        Сообщ.
        #3

        ,

          Senior Member

          ****

          Рейтинг (т): 1

          Internet Explorer у меня с изначально работал с этим XML файлом и без изменений в нём.
          Я внёс изменения в программе на С++ Builder таже ошибка, хотя при компиляции ошибок нет.


          Диссидент



          Сообщ.
          #4

          ,

            user posted image


            zuze



            Сообщ.
            #5

            ,

              Senior Member

              ****

              Рейтинг (т): 1

              Ну а толку я для большей надёжности эти строчки не закомментировал, а вообще удалил. Не работает.


              trainer



              Сообщ.
              #6

              ,

                ну так удали из XML все строчки кроме одной и посмотри, что будет. Потом добавляй по одной и снова смотри. Найдешь строку, из-за которой возникает ошибка — приходи.

                P.S. символ ‘<‘ в последовательности «<=» все же надо заменить на &gt;


                zuze



                Сообщ.
                #7

                ,

                  Senior Member

                  ****

                  Рейтинг (т): 1

                  Удалил почти всё.

                  Вот так выгядит XML файл

                  <TTC>
                  </TTC>

                  Ошибка Project LexicalAnaliz.exe raised exception class EDOMParseError with message ‘An invalid character was found in text content’ в первой строке, добавляв в первую строчку <?xml version=»1.0″ encoding=»UTF-8″?> непомогло.

                  Что же я не так делаю?


                  SVK



                  Сообщ.
                  #8

                  ,

                    Цитата zuze @

                    encoding=»UTF-8″

                    попробуй encoding=»WINDOWS-1251″ :ph34r:


                    zuze



                    Сообщ.
                    #9

                    ,

                      Senior Member

                      ****

                      Рейтинг (т): 1

                      encoding=»WINDOWS-1251″

                      Непомогло.


                      Диссидент



                      Сообщ.
                      #10

                      ,

                        Блин! Заголовок полностью записан?

                        ExpandedWrap disabled

                          <?xml version=»1.0″ encoding=»UTF-8″?>

                          <!— или так : —>

                          <?xml version=»1.0″ encoding=»Windows-1251″?>

                        Если не секрет — приаттач сам файл. Мож там внутри ещё что-то есть? Чем он создан — ручками или программно?


                        Повторил твой эксперимент из трёх строк

                        ExpandedWrap disabled

                          <?xml version=»1.0″ encoding=»UTF-8″?>

                          <TTC>

                          </TTC>

                        всё ОК!

                        Цитата zuze @

                        Ошибка Project LexicalAnaliz.exe raised

                        Ещё момент — чем открываешь? TXMLDocument‘ом?


                        zuze



                        Сообщ.
                        #11

                        ,

                          Senior Member

                          ****

                          Рейтинг (т): 1

                          Набиваю XML руками.

                          ExpandedWrap disabled

                            <?xml version=»1.0″ encoding=»UTF-8″?>

                            <TTC>

                            </TTC>

                          В Internet Explorer работает без ошибок, а в коде который я написал в самом начале неработает.

                          Текст XML файла в Memo1 не выводится.

                          Добавлено
                          Ничего не получайтся с этим XML я сделал с помощью текстовых файлов. С ними всё работает.

                          Большое спасибо.


                          Диссидент



                          Сообщ.
                          #12

                          ,

                            Цитата zuze @

                            Текст XML файла в Memo1 не выводится.

                            Utf8ToAnsi() тебе в помощь :yes:

                            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

                            0 пользователей:

                            • Предыдущая тема
                            • Borland C++ Builder/Turbo C++ Explorer
                            • Следующая тема

                            Рейтинг@Mail.ru

                            [ Script execution time: 0,0658 ]   [ 16 queries used ]   [ Generated: 19.10.23, 04:56 GMT ]  

                          • Ошибка при загрузке убунту
                          • Ошибка при загрузке файла мосрег
                          • Ошибка при загрузке установочной флешки windows 10
                          • Ошибка при загрузке трансляции
                          • Ошибка при загрузке самп