Добрый вечер. Уважаемый знатоки.
Такая проблема возникает:
Сохраняю документ, открываю его вновь, программа предлагает восстановить данные.
Возникает ошибка такого содержания:
Иногда возникает такая ошибка:
Удаленный компонент: часть /xl/styles.xml с ошибкой XML. (Стили) Ошибка загрузки. Строка 2, столбец 3335.
Восстановленные записи: Сведения о ячейках из части /xl/worksheets/sheet1.xml
После этого из файла пропадает часть дробных частей чисел.
В чем может быть причина?
Эксель 2007
Не торопись, и все успеешь намного быстрее
В такой ситуации надо смотреть что там с этим /xl/styles.xml, открыв файл .xlsx как архив. Например 7Zip’ом.
А далее провести эксперименты на копии файла:
- Вариант1: Тупо удалить styles.xml.
- Вариант2: Открыть его (например XML Notepad’ом), поискать что там не так, исправить.
- Вариант3: Сделать пересадку из другого файла, с той же «группой крови».
При неудаче, попеременно (значения, формулы, форматы, а не листы целиком) перетащить всё в новый файл, а этот, косячный, утилизировать.
Знания недостаточно, необходимо применение. Желания недостаточно, необходимо действие. (с) Брюс Ли
ниже приведен пример файла yaml, который я уже проверил через YAMLint
URL, но при загрузке этого файла библиотечной функцией yaml-cpp LoadFile я получаю сообщение об ошибке: «Ошибка в строке 0, столбце 0: неправильное преобразование при загрузке файла YAML»
Пример файла yaml:
%YAML 1.1
---
name: abcd_server_interface
spec_type: interface
spec_version: 1
description: 'Interface for capability ABCD Slam'
default_provider: abcd_server/abcd_server_provider
interface: {}
topics: {
provides: {
provide: {
name: '/3d_pose_graph',
type: '-',
description: '-',
},
provide: {
name: '/key_frame_msgs',
type: '-',
description: '-'
},
provide: {
name: '/pc_map',
type: 'sensor_msgs/PointCloud2',
description: 'Point cloud'
},
provide: {
name: '/3dOctomap',
type: '-',
description: '-'
},
provide: {
name: '/poseOfRobots',
type: '-',
description: '-'
},
provide: {
name: '/occupied_calls_vis_array',
type: '-',
description: '-'
},
},
requires: {
require: {
name: '/image_depth_throttled',
type: 'sensor_msgs/Image',
description: 'Sensor Image',
},
require: {
name: '/image_color_throttled/compressed',
type: 'sensor_msgs/CompressedImage',
description: 'Sensor compressed image',
},
require: {
name: '/statistics',
type: '-',
description: '-',
},
require: {
name: '/initialpose',
type: '-',
description: '-',
},
require: {
name: '/reset_rgbdserver',
type: 'std_msgs/Bool',
description: 'To reset server',
},
require: {
name: '/scan',
type: 'sensor_msgs/LaserScan',
description: 'laser scan data',
},
require: {
name: '/tf',
type: 'tf2_msgs/TFMessage',
description: 'tf',
},
require: {
name: '/tf_static',
type: 'tf2_msgs/TFMessage',
description: 'tf static',
},
}
}
Parameter: {
parameter: {
name: 'max_delay',
value: '100'
},
parameter: {
name: 'rgb_hints',
value: 'compressed'
},
parameter: {
name: 'depth_hints',
value: 'raw'
},
parameter: {
name: 'bot_frame',
value: '/base_link'
},
parameter: {
name: 'kinect_frame',
value: '/camera_depth_optical_frame'
},
parameter: {
name: 'minZ',
value: '-1.0'
},
parameter: {
name: 'maxZ',
value: '4.0'
},
}
Вот код, который я написал, чтобы заменить значение имени параметра («max_delay») в файле yaml в разделе параметров.
#include <fstream>
#include <iostream>
#include "yaml-cpp/yaml.h"
using namespace std;
bool UpdateYAMLFile(const string& sYamlFile, const string& sParamName2Update, const string sValue)
{
bool bRet = false;
try
{
//YAML::Node head_ = YAML::LoadFile(sYamlFile);
YAML::Node head_ = YAML::LoadFile(sYamlFile);
//YAML::Node head_ = YAML::Load(sYamlFile);
std::cout << head_.size();
cout<<"ramesh"<<endl;
for (YAML::iterator ith = head_.begin();ith != head_.end(); ++ith)
{
YAML::Node sub1_ = ith->second;
for (YAML::iterator itc = sub1_.begin();itc != sub1_.end(); ++itc)
{
string sParam = itc->second["name"].as<std::string>(); //cout << sParam << endl;
if(sParam == sParamName2Update)
{
itc->second["value"] = sValue;
bRet = true;
}
}
}
ofstream fout(sYamlFile);
fout << head_; //cout << head_ << "n";
}
catch (const YAML::Exception& e)
{
cout << "ERROR: Updation of yaml file " << sYamlFile << "Failed: Exception: " << e.what() << "n";
}
return bRet;
}
//driver
int main(int argc, char** argv)
{
int bRet = UpdateYAMLFile("sample.yaml", "max_delay","1150");
if(bRet == true)
cout << "SUCCESS: YAML file updated..n";
else
cout << "ERROR: YAML file update FAILED...n";
return 0;
}
В основном API UpdateYAMLFile обновит значение параметра max_dealy в файле примера yaml. используя этот API, я должен иметь возможность обновить все параметры (max_delay, rgb_hints, deep_hints, minZ, maxZ) в разделе параметров образца
файл yaml.
команда:
g ++ -std = c ++ 0x yaml.cpp -o res /usr/lib/x86_64-linux-gnu/libyaml-cpp.a
1
Похоже, вы один на вашем доступе к карте. Ваши карты вложены в три глубины:
topics: { // first key/value pair
provides: { // second key/value pair
provide: { // third key/value pair
name: '/3d_pose_graph', // now lookup the name attribute
type: '-',
description: '-',
}
}
}
У вас также есть проблема с вашей третьей картой: все ключи "provide"
, Это на самом деле не карта, и она будет проанализирована как одна пара ключ / значение (каждая перезаписывает предыдущую). Вы можете составить список следующим образом:
topics: {
provides: [ // this is now a list
{
name: '/3d_pose_graph',
type: '-',
description: '-',
}, {
name: '/key_frame_msgs',
type: '-',
description: '-'
}, ...
]
}
Более того, вам не нужно слепо перебирать значения карт, не зная, что в них. Почему бы просто не получить доступ к ключам напрямую:
for (YAML::Node provides : head_["topics"]["provides"]) {
if (provides["name"].as<std::string>() == sParamName2Update) {
provides["name"] = sValue;
}
}
1
- Remove From My Forums
-
Question
-
I have found a few solutions by opening document.xml and tried all of them but nothing fixes the problem. I am using the most recent version of Word. What should I do? This is really critical. Please help.
Alvaro Ramirez Software Engineer
Answers
-
Hi,
I modified a Word document and it could be opened without any warnings, and sent it to you via email.
Could you receive my email and open the Word document?
______________
Ashidacchi-
Marked as answer by
Tuesday, May 2, 2017 4:15 PM
-
Marked as answer by
Добрый день!
Глюкнул файл эксель (2007/ .xlsx). Перестал открываться. А там важная инфо ((
При попытке открытия сначала спрашивает доверяю ли я источнику, а после утвердительного «да», выдает следующее:
Была выполнена проверка на уровне файла с последующим восстановлением файла. Некоторые фрагменты документа могли быть восстановлены либо удалены.
Замененный компонент: часть /xl/worksheets/sheet4.xml с ошибкой XML. Ожидается знак «>». Строка 2, столбец 12335.
Удаленные записи: Свойства листа из части /xl/workbook.xml (Книга)
Удаленные записи: Формула из части /xl/calcChain.xml (Свойства вычислений).
Чем лечили:
— чек диск
— пробовала открыть через более новую версию офиса (не открывает), в инете тож не открывает,
— опен офисом открывает без ошибок пустой файл.
Выложить файл не могу — коммерческая тайна , руководитель узнает, убьет.
Что делать?
#python #xml
Вопрос:
Мне нужно перебрать более 100 xml-файлов, не получая этой ошибки: «Ошибка синтаксического анализа: XML или текстовое объявление не в начале сущности: строка 2, столбец 0». Как я могу это сделать? На данный момент я сделал:
import xml.etree.ElementTree as ET import os file_1 = ' '.join([x for x in os.listdir() if x.endswith('xml')]) utterances = [] for filename in file_1.split(): with open(filename, 'r', encoding="utf-8") as content: tree = ET.parse(content) root = tree.getroot() for y in root.iter('UNIT'): utterances.append(y.text)
Комментарии:
1. делать
ET.fromstring(content)
2. Если я сделаю дерево = ET.из строки(содержимое) Я получаю ошибку: ошибка типа: требуется байтообразный объект, а не ‘_io.TextIOWrapper’
3. делай
ET.fromstring(content.read())
илиET.parse(filename)
4. К сожалению, это приводит меня к той же ошибке. Кажется, мне нужно удалить пробелы в каком-то месте какого-то xml, который у меня есть. В любом случае, я ценю вашу помощь.
5. Что вы хотите сделать с недопустимыми XML-файлами? Просто игнорировать их? Что бы вы ни делали, вам нужно посмотреть на процесс, который сгенерировал плохой XML, и исправить его, чтобы это больше не повторилось.