我正在创建一个C#TBB。 我有如下所示的XML代码。如何在Tridion for C#TBB中添加第三方dll?
<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>
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())));
}
在XML代码 “身体” 标签发生多次。我需要提取每个“body”标签内容。为此,我使用HTML敏捷包。为了使它在C#TBB中工作,如何将HTML敏捷包DLL添加到Tridion系统?还请提供一个html敏捷性示例代码片段来循环访问body标签。
如果HTML Agility不能与C#TBB一起使用,那么请向我推荐一种如何获得“body”标记内容的方法?
在此先感谢。早期回复赞赏。
是的,你可以,我有很好的经验。我没有提到它的唯一原因是,将自己的DLL与第三方DLL合并可能很容易导致版权侵权。只要你确信这不会成为问题,你也可以使用这种方法。我将在单独的答案中提供更多细节。 – Quirijn 2012-04-29 19:56:56
我不认为有版权问题。版权是关于源代码。如果有人不想使用他们的IL,他们不应该发布一个程序集DLL,因为这有效地运送IL。当然,你可能违反许可条件,但那是另一个问题,我从来没有看到禁止这种技术的条件。反过来说,使用ILMerge会导致一些令人讨厌的副作用。我最近遇到了一个Tridion修补程序的问题,AFAIK只会用ILMerge方法显示 – 2012-04-29 20:27:08