【问题标题】:How can i get the package component XML as TBB output如何将包组件 XML 作为 TBB 输出
【发布时间】:2012-09-07 04:54:45
【问题描述】:

我正在尝试获取默认的包组件 XML 作为 TBB 输出。我正在使用以下代码:

 public void Transform(Engine engine, Package package)
    {

        XmlDocument packagebasexml = new XmlDocument();
        packagebasexml.LoadXml(package.GetByName("Component"));         

        package.PushItem(Package.OutputName, package.CreateXmlDocumentItem(ContentType.Xml,packagebasexml));

     }

但我无法获得,请提供任何建议/更改。

【问题讨论】:

  • 请澄清。您是在尝试获取 Package Item xml 还是实际组件的 xml(它们略有不同)
  • 我需要获取包裹项xml

标签: tridion tridion-2011


【解决方案1】:

以下 .Net TBB 应将组件包项 XML 复制到模板输出:

using System.Xml;
using Tridion.ContentManager.Templating;
using Tridion.ContentManager.Templating.Assembly;

namespace SDLTridion.Templating
{
    [TcmTemplateTitle("Get Component Input as Output")]
    class GetComponentInputAsOutput: ITemplate
    {
        public void Transform(Engine engine, Package package)
        {
            Item componentItem = package.GetByName(Package.ComponentName);
            XmlDocument componentItemXml = componentItem.GetAsXmlDocument();
            Item componentItemXmlAsString = package.CreateStringItem(ContentType.Text, componentItemXml.OuterXml);
            package.PushItem(Package.OutputName, componentItemXmlAsString);
        }
    }
}

【讨论】:

  • 谢谢大卫,我得到了输出
  • 顺便说一句,如果您希望此信息用于调试目的,则无需将其设置为模板输出。当您在 Package 窗口中单击名为“Component”的项目时,您可以在 SDL Tridion Template Builder 的 Item View 窗口中轻松看到它
【解决方案2】:

您是否尝试过使用 .Content 属性。我也可以知道你想通过将 XML 推送到包来实现什么。

public void Transform(Engine engine, Package package)
{

    XmlDocument packagebasexml = new XmlDocument();
    packagebasexml.LoadXml(package.GetByName("Component").Content.OuterXml);         

    package.PushItem(Package.OutputName, package.CreateXmlDocumentItem(ContentType.Xml,packagebasexml));

 }

另一种获取完整xml的方法

Item m_XmlInput = m_Package.GetByName(package.GetByName("Component"));
XmlTextReader input = new XmlTextReader(new StringReader(m_XmlInput.GetAsString()));

【讨论】:

  • "content.outerxml" 不会给我们完整的组件 xml,我们在包中得到了什么。它只会给出 。我需要获取组件的完整 xml。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-28
  • 1970-01-01
  • 2020-04-24
相关资源
最近更新 更多