如何在Tridion中为C#TBB添加第三方dll?

P.M*_*hna 5 c# xml html-parsing tridion

我正在创建一个C#TBB.我有如下所示的XML代码.

<content>
  <ah>123</ah>
  <ph>456</ph>
  <body>
    <sc>hi</sc>
    <value>aa</value>
    <value>bb</value>
    <value>cc</value>
    <value>dd</value>
    <value>dd</value>
  </body>
  <body>
    <sc>hello</sc>
    <value>ee</value>
    <value>ddff</value>
  </body>
</content>
Run Code Online (Sandbox Code Playgroud)

C#TBB代码:

using (MemoryStream ms = new MemoryStream())
{
XmlTextWriter securboxXmlWriter = new XmlTextWriter(ms, new System.Text.UTF8Encoding(false));
securboxXmlWriter.Indentation = 4;
securboxXmlWriter.Formatting = Formatting.Indented;
securboxXmlWriter.WriteStartDocument();


securboxXmlWriter.WriteStartElement("component");

securboxXmlWriter.WriteAttributeString("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
securboxXmlWriter.WriteAttributeString("xmlns", "http://www.w3.org/1999/xhtml");


securboxXmlWriter.WriteStartElement("content");
securboxXmlWriter.WriteStartElement("wire:wire");
securboxXmlWriter.WriteStartElement("wire:si");

securboxXmlWriter.WriteStartElement("wg:ah");
securboxXmlWriter.WriteElementString("text", package.GetValue("Component.ah"));
securboxXmlWriter.WriteEndElement();

securboxXmlWriter.WriteStartElement("wg:ph");
securboxXmlWriter.WriteElementString("nlt", package.GetValue("Component.ph"));
securboxXmlWriter.WriteEndElement();

securboxXmlWriter.WriteEndElement();
securboxXmlWriter.WriteEndElement();
securboxXmlWriter.WriteEndElement();
securboxXmlWriter.WriteEndElement();
securboxXmlWriter.WriteEndDocument();
securboxXmlWriter.Flush();
securboxXmlWriter.Close();



Item output = package.GetByName("Output");

if (output != null)
{
package.Remove(output);
}

package.PushItem("Output", package.CreateStringItem(ContentType.Xml, Encoding.UTF8.GetString(ms.ToArray())));
}
Run Code Online (Sandbox Code Playgroud)

在XML代码中,"body"标签多次出现.我需要提取每个"body"标签内容.为此,我使用的是HTML敏捷包.为了使它在C#TBB中工作,如何将HTML敏捷包DLL添加到Tridion系统?还请提供html敏捷性的示例代码片段,以循环遍历body标签.

如果HTML Agility无法与C#TBB一起使用,请建议我如何获取"body"标签内容?

在此先感谢.早期的回应表示赞赏.

Chr*_*ers 7

您需要将第三方DLL放在全局程序集缓存(GAC)中.对于样本敏捷包代码,我建议您使用更具体的标题来单独提出问题.

  • 请记住将DLL放在每个内容管理器和发布者计算机上的GAC中. (3认同)

Nei*_*eil 2

您还可以使用ILMerge将第三方 DLL 和 TBB 程序集合并为一个,然后可以上传到 Tridion。

  • 是的,你可以,而且我在这方面有很好的经验。我没有提及的唯一原因是,将自己的 DLL 与第三方 DLL 合并可能很容易导致版权侵权。只要您确定这不会成为问题,您也可以使用该方法。我将在单独的答案中提供更多详细信息。 (2认同)