我正在創建一個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