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 に答える