【问题标题】:how to get XML Structure of any object in SDL Tridion如何在 SDL Tridion 中获取任何对象的 XML 结构
【发布时间】:2012-06-15 00:01:53
【问题描述】:

如何获取 Tridion 中项目的 XML 结构(如架构、组件、复合模板、关键字、类别、文件夹等)?

它是在 Tridion 的安装文件夹中还是在其他任何地方?或者有什么方法可以直接从 Tridion UI 访问它?

【问题讨论】:

  • 不清楚你想看到什么样的 XML 结构。你能澄清你的问题吗?如果你想获取一个item的xml,那么你可以使用CoreService API来获取它。我相信您可以通过使用 UI API 获得相同的信息。
  • @IgorPaniushkin。我想获取任何项目(如组件、文件夹、架构或类别)的完整来源。
  • 如果您指定上下文会有所帮助。 Boris 已经回答了如何在 Anguilla 中执行此操作,Quirijn 关于如何在 IE 中执行此操作,但您也可以对 TOM、TOM.NET、XSLT 或 CoreService 执行相同操作 - 显然使用不同的方法......

标签: tridion tridion-2011


【解决方案1】:

这是您可以在浏览器控制台中运行的最简单的 sn-p 来实现:

var itemUri = "tcm:...";
var item = $models.getItem(itemUri);
if(item)
{
   if(item.isStaticLoaded())
   {
      console.log(item.getStaticXml());
   }
   else
   {
      $evt.addEventHandler(item, "staticload", function() {
         console.log(item.getStaticXml());
      });
     item.staticLoad();
   }
}

【讨论】:

    【解决方案2】:

    您也可以使用协议处理程序。如果您在内容管理服务器上登录,只需启动 Internet Explorer 并在地址栏中输入 uri。它将显示任何项目的 XML 表示。 但是:这不适用于 64 位版本的 IE 9(请参阅另一个最近的线程)。

    【讨论】:

      【解决方案3】:

      正如 Quirijn 所说,使用协议处理程序是一种最喜欢的技术。另外 - 如果您使用的是 Tridion 2011,那么来自 http://code.google.com/p/tridion-2011-power-tools/ 的 Item Xml 扩展也非常有用。

      如果您使用的是旧版本的 Tridion,您可能还想尝试将 UI 设置为调试模式并以这种方式检查 XML。

      【讨论】:

        【解决方案4】:

        另外两种快速获取组件 XML 的方法,这次是通过模板。

        注意:依赖项目的原始来源时要小心,尤其是当我们有支持的 API 时。

        XSLT 组件模板

        <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
            xmlns:generic="http://createandbreak.net/schema/generic" 
            xmlns:tcm="http://www.tridion.com/ContentManager/5.0"
            xmlns:xlink="http://www.w3.org/1999/xlink"
            exclude-result-prefixes="xsl tcm xlink generic">
        
            <xsl:output omit-xml-declaration="no" indent="yes"
                method="xml" cdata-section-elements="description" />
            <xsl:variable name="Content" select="/tcm:Component/tcm:Data/tcm:Content" />
        
            <xsl:template match="/">
                <xsl:copy-of select="." />
                <xsl:apply-templates select="$Content/*" />
             </xsl:template>
        
            <xsl:template match="*">
                <xsl:copy-of select="." />
            </xsl:template>
        </xsl:stylesheet>
        

        C# 程序集模板构建块 (TOM.NET)

        using Tridion.ContentManager.ContentManagement;
        using Tridion.ContentManager.Templating; 
        using Tridion.ContentManager.Templating.Assembly;
        
        namespace CreateAndBreakTemplates
        {
            [TcmTemplateTitle("Show XML Guts")]
            public class ShowXmlGuts : ITemplate
            {
                public void Transform(Engine engine, Package package)
                {
                    Item contentItem = package.GetByType(ContentType.Component);
                    Component component = engine.GetObject(contentItem.GetAsSource().GetValue("ID")) as Component;
                    package.PushItem("componentSource", package.CreateHtmlItem(component.Content.OuterXml));
                }
            }
        }
        

        【讨论】:

          【解决方案5】:

          如果使用 CoreService,您还可以使用以下代码获取项目的 XML:

          public XmlElement ToR6Xml()
          {
              DataContractSerializer dcs = new DataContractSerializer(ComponentData);
              using(MemoryStream stream = new MemoryStream())
              {
                  dcs.WriteObject(stream, CurrentData);
                  stream.Position = 0;
                  XmlDocument document = new XmlDocument();
                  document.Load(stream);
                  return document.DocumentElement;
              }
          }
          

          然而,这将返回 Tridion "R6" Xml,与通过 TOM.NET 或协议处理程序 ("R5" xml) 公开的不同。

          没有

          【讨论】:

            猜你喜欢
            • 2013-01-09
            • 1970-01-01
            • 2012-08-06
            • 1970-01-01
            • 2012-09-22
            • 1970-01-01
            • 2013-01-05
            • 2012-07-25
            • 1970-01-01
            相关资源
            最近更新 更多