C# OneNote Копирование изображения на другую страницу с помощью UpdatePageContent меняет XMLC#

Место общения программистов C#
Ответить
Anonymous
 C# OneNote Копирование изображения на другую страницу с помощью UpdatePageContent меняет XML

Сообщение 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;
}


Подробнее здесь: https://stackoverflow.com/questions/324 ... hanges-xml
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»