2012-03-30 64 views
4

我想通過給XML源輸入來創建一個組件直接使用核心服務2011年,支持SDL Tridion創建一個組件2011年如何通過提供XML源文件作爲輸入

我想編寫代碼來創建一個組件通過上傳源XML。使用核心服務2011.

說XML文件的名稱是helloworld.xml和位置是D:\abcd\cdef\all\helloworld.xml

我已經寫了這樣的代碼,但它不工作。

XmlDocument contentxml = new XmlDocument(); 
contentxml.LoadXml(@"D:\abcd\cdef\all\helloworld.xml"); 
Response.Write("<BR>" + contentxml.ToString()); 
component.Content = contentxml.ToString(); 
ComponentData comp = (ComponentData)client.Create(component, new ReadOptions()); 

Response.write沒有顯示任何內容。糾正我,如果我錯過了任何事情。 它沒有創建任何組件,錯誤即將到來。

當我想這:

XmlDocument contentxml = new XmlDocument(); 
try 
{ 
    contentxml.LoadXml(@"D:\abcd\cdef\all\helloworld.xml"); 
} 
catch (XmlException exp) 
{ 
    Console.WriteLine(exp.Message); 
} 
StringWriter sw = new StringWriter(); 
XmlTextWriter xw = new XmlTextWriter(sw); 
contentxml.WriteTo(xw); 
Response.Write("<BR>" + sw.ToString()); 

component.Content = sw.ToString(); 
ComponentData comp = (ComponentData)client.Create(component, new ReadOptions()); 

這一次,它的顯示unable to find UUId:一些事情那樣。

我的helloworld.xml看起來像這樣。

<Content xmlns="uuid:1111eb85-0X11-11f9-1e2X-1X82X78fX920"> 
    <first>Hello World.This is Fisrt field</first> 
    <second>Hello World.This is second field</second> 
</Content> 

如果有人分享一些示例代碼來完成它,那將是非常棒的。

+0

請說明你到目前爲止所嘗試過的 - 最好是不適合你的代碼。就目前而言,您似乎期待人們爲您編寫代碼。 – 2012-03-30 10:18:26

+3

這是很難與Tridion相關的,說實話...不能夠使用System.Xml類加載XML文檔與CoreService或Tridion無關... – 2012-03-30 13:15:31

回答

6

的大致輪廓:

  1. 加載XML從文件到一個XDocument/XmlDocument的。
  2. 通過調用客戶端上的GetDefaultData創建一個新組件。
  3. 將Component的Content屬性設置爲XML。
  4. 通過調用客戶端上的保存來保存組件。

如果您還沒有,請查看SDL Tridion World上提供的Core Service API文檔。

如果您在執行此操作時遇到問題,請發佈您已擁有的代碼以及您嘗試過的代碼以使其正常工作。

+0

我編輯了指示我試過的部分的問題,請點擊它。 – Patan 2012-03-30 12:27:18

+2

我相信你需要使用.Load而不是.LoadXML當你想從文件加載。否則,它期望您按原樣傳遞XML。 – 2012-03-30 13:06:41

8

從文件中加載任何XML並嘗試創建組件將不起作用,除非XML使用CMS期望的格式。

SDL Tridion中的組件的XML結構具有一些固定部分(示例節點內容,元數據)以及一些靈活的部分(您定義字段的方式)。 首先,您需要具有與CMS所期望的結構相同的XML。 通常,應該在xml中的節點是CONTENT和METADATA,在XML文檔中加載這些節點並使用Core Service API創建一個使用這些節點中包含的內容的組件。 瞭解基於模式的組件結構的最佳方法是使用Tridion UI創建示例組件,並瞭解如何構建XML。之後,您需要使用該結構創建XML源。 我最近發佈了一個如何使用Core Service創建組件的例子,請看看這個例子。

Faulted State error while creating component with Core Service

在此之後的代碼,你可以訪問節點內容和元數據

componentData.Content = xmlUtil.GetNewXmlNode( 「內容」,schemaData.NamespaceUri); componentData.Metadata = xmlUtil.GetNewXmlNode(「Metadata」,schemaData.NamespaceUri);

並取代那些與您的內容

4

使用XmlDocument.LoadXML()期待一個XML字符串作爲輸入,由彼得評論說,你應該使用XMLDocument.load方法()來代替,在這裏看到更多的細節http://msdn.microsoft.com/en-us/library/a8ta6tz4.aspx

當你通過這個障礙時,你將需要米格爾在他的回答中提供的信息以繼續。

相關問題