2012-04-10 2 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

コードがうまく動作しない場合は、コードを共有することをおすすめします。そうすれば、すぐにプロジェクトにコピー/ペーストできる回答が得られます。 –

答えて

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

+0

次のエラーが発生しています。行47と48はXmlNodeです。schemaNode = componentXml.SelectSingleNode( "/ tcm:Component/tcm:Data/tcm:Schema"、nsmgr);行47と48は、「オブジェクトのインスタンスにオブジェクト参照が設定されていません。 文字列schemaTitle = schemaNode.Attributes ["xlink:title"]。値; ご覧ください。 – Patan

+0

サンプルコンテンツファイルも追加しました。それをチェックしてください。 – Patan

6

通常、コンポーネントのXMLには、スキーマTcmUriおよびタイトル(ノードtcm:Component/tcm:Data/tcm:Schema)の参照が含まれています。

ただし、コアサービスにComponentDataをロードすると、ComponentData APIを通じて公開されている完全なコンポーネントXMLは表示されません。

ComponentDataからスキーマTcmUriとタイトルを取得する方法があります。 ComponentData.SchemaプロパティIdRefまたはTitleを使用してください。

関連する問題