Reputation: 837
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
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
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