【问题标题】:How to add contents into the xml element?如何将内容添加到 xml 元素中?
【发布时间】:2015-07-01 11:45:41
【问题描述】:

我需要在m:msqrt的xml元素中插入一个单词sqrt(没有标签的纯文本),如下所示:

我试过了:

var path = (app.activeDocument.fullName.parent.fsName).toString().replace(/\\/g, '/');
//path of active document(sample.indd)

var xmlPath = (app.activeDocument.fullName.parent.fsName).toString().replace(/\\/g, '/')+"/with_aid2.xml";

xmlFile = File (xmlPath);

if(xmlFile.exists){
    xmlFile.open();
    var myString = xmlFile.read();
    xmlFile.close();
    myXml = new XML ();
    myXml = XML(myString);
    var msqrtCount = myXml.xpath("//m:msqrt");

}else{alert(xmlPath+" doesn't exist!");}

for(var i=0;i<msqrtCount.length();i++){  
    var added =    msqrtCount[i];
    added.contents="sqrt";       
}

我收到一条错误消息,提示内容属性无效。

【问题讨论】:

    标签: xml extendscript adobe-indesign


    【解决方案1】:

    我很困惑。您是否尝试将文本添加到 InDesign 文档或要导入到 InDesign 文档的 XML 文件?您提供的代码似乎正在访问 XML 文件,将其加载到内存中,然后尝试将文本添加到 XML 文件中的标记。如果这是您的目标,我会在 InDesign 之外处理。

    如果您想将文本添加到 InDesign 文档中的标记区域,请使用以下 XML 规则处理:

    #include "glue code.jsx"
    
    var myDocument = app.activeDocument;
    addContent(myDocument, "new content");
    
    function addContent(myDocument, myContent){
        var myRuleSet = new Array(new addContentToTag);
    
        with(myDocument){
            var elements = xmlElements;
            __processRuleSet(elements.item(0), myRuleSet);
        }
    
        function addContentToTag(){
            this.name = "addContentToTag";
            this.xpath = "/Root/Story/Tag";
            this.apply = function(myElement, myRuleProcessor){
                    myElement.contents = myContent;
                    return true;
            };
        }
    }
    

    (请注意包含“glue code.jsx”文件。该文件必须位于您的脚本目录中,XML 规则处理才能正常运行)。

    【讨论】:

      猜你喜欢
      • 2019-10-14
      • 1970-01-01
      • 1970-01-01
      • 2012-04-14
      • 2013-07-19
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多