Customxmlnode: есть ли способ получить один узел, используя офис js? - PullRequest
0 голосов
/ 04 июня 2018

Я заметил, что с VBO вы можете вызвать метод getSingleNode, чтобы получить конкретный объект узла, возможно ли сделать что-то подобное с офисными js?

Кроме того, у меня есть значение переключателя в моемСловом метаданные, мне удалось получить доступ к его объекту customxmlnode, затем я использовал метод setTextsync, чтобы изменить его значение с true на false, но новое значение, которое я получаю для метаданных переключателя, пусто.Другие метаданные типа текста могут быть отредактированы правильно, хотя.Может ли кто-нибудь дать некоторые предложения?

function EditCTF() {
  //$("#fields").css({ display: "" });
  Word.run(function(context) {
    context.document.properties.title = $("#Title").val();
    Office.context.document.customXmlParts.getByNamespaceAsync(
      "http://schemas.microsoft.com/office/2006/metadata/properties",
      function(asyncResult) {
        if (asyncResult.value.length > 0) {
          var xmlPart = asyncResult.value[0];

          xmlPart.getNodesAsync("*/*", function(nodeResults) {
            console.log(nodeResults.value.length);
            for (i = 0; i < nodeResults.value.length; i++) {
              var node = nodeResults.value[i];
              node.getTextAsync({ asyncContext: "StateNormal" }, function(result) {
                console.log(result);
                console.log(result.value);
              });

              console.log("NewValue");

              if (node.baseName == "Address") {
                node.setTextAsync(
                  $("#Address").val(),
                  {
                    asyncContext: "StateNormal"
                  },
                  function(newresult) {}
                );
              }

              if (node.baseName == "MainContactPerson") {
                node.setTextAsync(
                  $("#Main Contact Person").val(),
                  {
                    asyncContext: "StateNormal"
                  },
                  function(newresult) {}
                );
              }

              if (node.baseName == "GDPR") {
                node.setTextAsync(
                  "true",
                  {
                    asyncContext: "StateNormal"
                  },
                  function(newresult) {
                    console.log(newresult);
                    console.log(newresult.value);
                  }
                );
              }
            }
          });
        }
      }
    );
    return context.sync().then(function() {});
  });
}

1 Ответ

0 голосов
/ 05 июня 2018

Пожалуйста, используйте выражение XPATH, которое вы отправляете в методе xmlPart.getNodesAsync (" / ", функция (nodeResults). Первый параметр - это выражение XPath, которое вы можете использовать для получения нужного вам узла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...