如何将包组件XML作为TBB输出

时间:2012-09-07 04:54:46

标签: tridion tridion-2011

我正在尝试将默认的Package Component 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));

     }

但是我无法得到,请提出任何建议/更改。

2 个答案:

答案 0 :(得分:7)

以下.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);
        }
    }
}

答案 1 :(得分:3)

您是否尝试使用 .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()));