핵심 서비스를 사용하여 Tridion 2011 프로젝트에 대한 사용자 지정 가져 오기 도구를 작성하는 동안 구성 요소를 저장하려고 할 때 문제가 발생했습니다.Tridion 2011 핵심 서비스 : Xml 조작을 사용하여 새 필드로 구성 요소를 업데이트 할 수 없습니다.
다음 코드는 구성 요소의 필드에 값이 있지만 오류가 발생하지 않을 때 올바르게 작동합니다.
네임 스페이스 의 요소 '콘텐츠' 'UUID : 09ed2feb-f7cb-4760
이//component is a ComponentData object from Tridion var doc = new XmlDocument(); doc.LoadXml(component.Content); var namespaces = new XmlNamespaceManager(doc.NameTable); namespaces.AddNamespace("ns", doc.DocumentElement.NamespaceURI); //componentFromSpreadsheet has a dictionary of fields and values to update foreach (var field in componentFromSpreadsheet.Fields) { XmlNode xmlNode = doc.SelectSingleNode("//ns:" + field.Key, namespaces); if (xmlNode == null) { xmlNode = doc.CreateNode(XmlNodeType.Element, field.Key, doc.DocumentElement.NamespaceURI); doc.DocumentElement.AppendChild(xmlNode); } //Namespace any Html in the field string fieldValue = HtmlTidy.Tidy(field.Value); xmlNode.InnerXml = fieldValue; } component.Content = doc.OuterXml; //This line throws a FaultException<CoreServiceException> with an //XmlException from tridion client.Save(component, null);
여기 Tridion의 메시지입니다 : 여기
내 코드 (간결함을 제거 오류 처리)입니다 -ba4c-b9ff4f45d025 '의'uuid : 09ed2feb-f7cb-4760-ba4c-b9ff4f45d025 '네임 스페이스에 잘못된 자식 요소 'summary '가 있습니다. 'related_links'네임 스페이스 에서 'UUID : 09ed2feb-f7cb-4760-ba4c-b9ff4f45d025'예상 가능한 요소의 목록
나는 요약이 구성 요소의 스키마에 유효한 필드 알고있다.
스키마가 엄격하고 XML 내의 필드 순서에 신경을 쓰는 것처럼 보입니다. 이 접근법이나 다른 접근법에 어떤 방법이 있습니까?
동료 (Ryan Durkin)의 권장 사항에서 우리는 훌륭하게 작동하고 강력하게 형식화되었지만 유연성이없는 직렬화 방식을 사용 했으므로 우리가 업데이트 할 스키마에 동의해야합니다. –