3

我正在尝试将默认的包组件 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));

     }

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

4

2 回答 2

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);
        }
    }
}
于 2012-09-07T09:07:52.257 回答
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()));
于 2012-09-07T06:31:38.137 回答