SDLBeginner
SDLBeginner

Reputation: 837

How can i get the package component XML as TBB output

I am trying to get the default Package Component XML as the TBB Output. I am using the below code :

 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));

     }

but i am not able to get, kindly give any suggestion/changes.

Upvotes: 3

Views: 1129

Answers (2)

David Forster
David Forster

Reputation: 1390

The following .Net TBB should copy the Component Package Item XML to the Template output:

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);
        }
    }
}

Upvotes: 7

vikas kumar
vikas kumar

Reputation: 2444

Did you try with .Content property. Also may I know what you want to achieve by pushing XML to package.

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));

 }

Another way to get full xml

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

Upvotes: 3

Related Questions