C# Word AddIn edit CustomXmlParts - PullRequest
       16

C# Word AddIn edit CustomXmlParts

1 голос
/ 10 февраля 2020

Я пытаюсь редактировать CustomXmlPart, но я не знаю, как.

Я пробовал это:

        CustomXMLParts xmlParts = Globals.ThisAddIn.Application.ActiveDocument.CustomXMLParts.SelectByNamespace(@"MyNamespace");
        XmlDocument xmlDocument = new XmlDocument();
        xmlDocument.LoadXml(xmlParts[1].XML);
        foreach (XmlNode mainNode in xmlDocument.ChildNodes)
        {
            foreach (XmlNode node in mainNode)
            {
                switch (node.LocalName)
                {
                    case ("SelAdrIndex"):
                        node.InnerXml = "1111";
                        break;
                }
            }
        }

Но это не работает

Единственное другой способ, который я знаю, это удалить часть XML и добавить версию для редактирования.

1 Ответ

1 голос
/ 13 февраля 2020

Свойства и методы объекта CustomXMLPart предоставляют возможность напрямую манипулировать содержимым пользовательской XML детали. Нет необходимости использовать метод сохранения или что-то подобное - манипулирование происходит непосредственно внутри файла XML.

Обратите внимание, что возможности XML отражают возможности анализатора COM MS XML и не библиотеки. NET Framework.

Пример для поиска узла или узлов, а затем чтения / записи данных.

    private void btnEditCXP_Click(object sender, RibbonControlEventArgs e)
    {
        Word.Document doc = Globals.ThisAddIn.app.ActiveDocument;
        string sXML = "<?xml version='1.0' encoding='utf-8'?><books><book><title>Test 1</title><author>Me</author></book></books>";
        Office.CustomXMLPart cxp = doc.CustomXMLParts.Add(sXML);
        Office.CustomXMLNodes nds = cxp.SelectNodes("//book");
        System.Diagnostics.Debug.Print(nds.Count.ToString());
        foreach (Office.CustomXMLNode nd in nds)
        {
            Office.CustomXMLNode ndTitle = nd.SelectSingleNode("//title");
            System.Diagnostics.Debug.Print(ndTitle.Text);
            ndTitle.Text = "11111";
            System.Diagnostics.Debug.Print(ndTitle.Text);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...