2012-04-10 35 views
1

我正在使用SDL Tridion 2011 SP1中的核心服務2011創建組件。如何直接組件源XML時獲取模式名稱

我只想知道,當我在本地計算機中直接使用組件源XML時,是否可以獲取模式名稱。

考慮我的ABCD.xml存儲在我的本地機器上。我想給這個ABCD.xml作爲輸入獲取它正在使用的模式。

是否有可能通過核心服務2011,如果是的話請分享您對此的看法。

只是在我的本地機器上有一個示例內容xml文件。是這裏。

  <Content xmlns="uuid:someUUID"> 
       <first>first filed</first> 
       <second>second field</second> 
      </Content> 

謝謝。

+2

如果您無法讓您的代碼正常工作,我建議您分享您的代碼。這樣,您就有更好的機會獲得答案,您可以立即複製/粘貼到項目中。 – 2012-04-10 12:01:48

回答

2

您可以使用下面的代碼: XmlDocument componentXml = new XmlDocoment();

XmlDocument componentXml = new XmlDocument(); 
componentXml.Load("Your Xml File Path"); 
XmlNameTable nameTable = new NameTable(); 
XmlNamespaceManager nsmgr = new XmlNamespaceManager(nameTable); 
nsmgr.AddNamespace("tcm", "http://www.tridion.com/ContentManager/5.0"); 

XmlNode schemaNode = componentXml.SelectSingleNode("/tcm:Component/tcm:Data/tcm:Schema", nsmgr); 
string schemaTitle = schemaNode.Attributes["xlink:title"].Value; 
+0

感謝您的信息 – Patan 2012-04-18 06:22:33

+0

我收到以下錯誤。在第48行的「error is Object reference not set to a instance of a object」。第47和48行是XmlNode schemaNode = componentXml.SelectSingleNode(「/ tcm:Component/tcm:Data/tcm:Schema」,nsmgr); string schemaTitle = schemaNode.Attributes [「xlink:title」]。Value; 請看看它。 – Patan 2012-04-18 06:34:24

+0

我也添加了示例內容文件。 PLZ檢查它。 – Patan 2012-04-18 06:40:07

6

通常,組件的XML包含對架構TcmUri和標題的引用(在節點tcm:Component/tcm:Data/tcm:Schema下)。

但是,如果您在覈心服務中加載ComponentData,則不會看到通過ComponentData API公開的完整Component XML。

有一種方法可以從ComponentData中檢索Schema TcmUri和標題。只需使用ComponentData.Schema屬性IdRefTitle