Я пытаюсь скопировать страницу OneNote в другой блокнот с новым заголовком. Пока это работает с GetPageContent и UpdatePageContent. Он копирует все элементы, кроме изображений. Объект изображения создан, но на нем отображается только красный крестик. Я попытался решить эту проблему самостоятельно, записал XML старой страницы и XML новой страницы в файлы. Единственное различие между объектами изображения заключалось в том, что на новой странице отсутствовал атрибут «формат». Затем я записал содержимое своей XML-строки в файл перед UpdatePageContent, загрузил содержимое со своей новой страницы и записал его в другой файл. Итак, у меня была строка, которую я использовал для UpdatePageContent, и строка XML, которая на самом деле была показана в OneNote.
До UpdatePageContent атрибут «format» существовал, а после того, как он отсутствовал.
Я даже пытался вручную добавить атрибут в файл, а затем загрузить его и обновить, но это ничего не изменило, он также был удален после UpdatePageContent.
Этот отсутствующий атрибут вызывает красный «x» или это так? есть что-то еще, что нужно проверить?
И если это проблема, как мне избежать удаления атрибута «формат»?
Любая помощь приветствуется.
Вот мой код для копирования страницы и ее обновления («ID» — это идентификатор страницы, которую я хочу скопировать):
onApp.CreateNewPage(ID, out A, NewPageStyle.npsBlankPageWithTitle);
var XMLPageContent = XDocument.Parse(PageContent);
onApp.GetPageContent(A, out xml);
var NewXD = XDocument.Parse(xml);
NewXD.Element(NS + "Page").Attribute("pageLevel").Value = XMLPageContent.Element(NS+ "Page").Attribute("pageLevel").Value;
NewXD.Elements(NS + "Page").Elements().Remove();
getChild(XMLPageContent.Element(NS + "Page"), NewXD.Element(NS + "Page"));
var Title = NewXD.Descendants(NS + "T").First();
Title.Value = NewPage;
onApp.UpdatePageContent(NewXD.ToString());
onApp.GetPageContent(A, out xml);
doc = XDocument.Parse(xml);
StreamWriter SW = new StreamWriter("C:\\xml.txt");
SW.Write(doc.ToString());
StreamWriter SW2 = new StreamWriter("C:\\xml2.txt");
SW2.Write(XMLPageContent.ToString());
SW.Close();
SW2.Close();
}
private void getChild(XElement PXE, XElement NXE)
{
if (PXE.Elements() != null)
{
foreach (XObject XE in PXE.Nodes())
{
try
{
XElement XEE = (XElement) XE;
XElement toAdd = new XElement(XEE.Name.ToString());
foreach (XAttribute XA in XEE.Attributes())
{
if (!XA.Name.LocalName.Contains("objectID"))
{
try
{
toAdd.Add(XA);
}
catch (Exception e)
{
MessageBox.Show(XA.Name.ToString());
throw e;
}
}
}
if (toAdd.Attributes("callbackID").ToArray().Length > 0)
{
string[] hilf = toAdd.Attribute("callbackID").Value.Split('{', '}');
string xml;
onApp.GetPageContent(A, out xml);
var doc = XDocument.Parse(xml);
hilf[1] = doc.Element(NS+"Page").Attribute("ID").Value.Split('{', '}')[1];
toAdd.Attribute("callbackID").Value = '{' + hilf[1] + '}' + '{' + hilf[3] + '}' + '{' + hilf[5] + '}';
}
getChild(XEE, toAdd);
NXE.Add(toAdd);
}
catch(InvalidCastException)
{
NXE.Add(XE);
}
}
}
else return;
}
Подробнее здесь: https://stackoverflow.com/questions/324 ... hanges-xml
C# OneNote Копирование изображения на другую страницу с помощью UpdatePageContent меняет XML ⇐ C#
Место общения программистов C#
1767643715
Anonymous
Я пытаюсь скопировать страницу OneNote в другой блокнот с новым заголовком. Пока это работает с GetPageContent и UpdatePageContent. Он копирует все элементы, кроме изображений. Объект изображения создан, но на нем отображается только красный крестик. Я попытался решить эту проблему самостоятельно, записал XML старой страницы и XML новой страницы в файлы. Единственное различие между объектами изображения заключалось в том, что на новой странице отсутствовал атрибут «формат». Затем я записал содержимое своей XML-строки в файл перед UpdatePageContent, загрузил содержимое со своей новой страницы и записал его в другой файл. Итак, у меня была строка, которую я использовал для UpdatePageContent, и строка XML, которая на самом деле была показана в OneNote.
До UpdatePageContent атрибут «format» существовал, а после того, как он отсутствовал.
Я даже пытался вручную добавить атрибут в файл, а затем загрузить его и обновить, но это ничего не изменило, он также был удален после UpdatePageContent.
Этот отсутствующий атрибут вызывает красный «x» или это так? есть что-то еще, что нужно проверить?
И если это проблема, как мне избежать удаления атрибута «формат»?
Любая помощь приветствуется.
Вот мой код для копирования страницы и ее обновления («ID» — это идентификатор страницы, которую я хочу скопировать):
onApp.CreateNewPage(ID, out A, NewPageStyle.npsBlankPageWithTitle);
var XMLPageContent = XDocument.Parse(PageContent);
onApp.GetPageContent(A, out xml);
var NewXD = XDocument.Parse(xml);
NewXD.Element(NS + "Page").Attribute("pageLevel").Value = XMLPageContent.Element(NS+ "Page").Attribute("pageLevel").Value;
NewXD.Elements(NS + "Page").Elements().Remove();
getChild(XMLPageContent.Element(NS + "Page"), NewXD.Element(NS + "Page"));
var Title = NewXD.Descendants(NS + "T").First();
Title.Value = NewPage;
onApp.UpdatePageContent(NewXD.ToString());
onApp.GetPageContent(A, out xml);
doc = XDocument.Parse(xml);
StreamWriter SW = new StreamWriter("C:\\xml.txt");
SW.Write(doc.ToString());
StreamWriter SW2 = new StreamWriter("C:\\xml2.txt");
SW2.Write(XMLPageContent.ToString());
SW.Close();
SW2.Close();
}
private void getChild(XElement PXE, XElement NXE)
{
if (PXE.Elements() != null)
{
foreach (XObject XE in PXE.Nodes())
{
try
{
XElement XEE = (XElement) XE;
XElement toAdd = new XElement(XEE.Name.ToString());
foreach (XAttribute XA in XEE.Attributes())
{
if (!XA.Name.LocalName.Contains("objectID"))
{
try
{
toAdd.Add(XA);
}
catch (Exception e)
{
MessageBox.Show(XA.Name.ToString());
throw e;
}
}
}
if (toAdd.Attributes("callbackID").ToArray().Length > 0)
{
string[] hilf = toAdd.Attribute("callbackID").Value.Split('{', '}');
string xml;
onApp.GetPageContent(A, out xml);
var doc = XDocument.Parse(xml);
hilf[1] = doc.Element(NS+"Page").Attribute("ID").Value.Split('{', '}')[1];
toAdd.Attribute("callbackID").Value = '{' + hilf[1] + '}' + '{' + hilf[3] + '}' + '{' + hilf[5] + '}';
}
getChild(XEE, toAdd);
NXE.Add(toAdd);
}
catch(InvalidCastException)
{
NXE.Add(XE);
}
}
}
else return;
}
Подробнее здесь: [url]https://stackoverflow.com/questions/32478224/c-sharp-onenote-copying-image-to-another-page-with-updatepagecontent-changes-xml[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия