2012-01-17 16 views
5

मैंने एक कस्टम वेब भाग बनाया जिसमें कस्टम संग्रह संपत्ति (टैब) है। जब आप संपादन मोड (ब्राउज़र के माध्यम से) पर कस्टम प्रॉपर्टी को संपादित और सहेजते हैं तो वेब पार्ट ठीक से काम करता है। मैं वेब सेवाओं का उपयोग कर अपने कस्टम वेब भाग को अपडेट करना चाहते, तो मैं वेब हिस्सा निर्यात व एक्सएमएल सामग्री ले लिया और इसे पारित के रूप में यह है (ताकि मैं आसानी से यह परीक्षण कर सकते हैं), लेकिन एक त्रुटि आईवेब सेवाओं का उपयोग करते हुए शेयरपॉइंट कस्टम वेब पार्ट को सहेजते समय अच्छी तरह से गठित XML त्रुटि

The file you imported is not valid. 
Verify that the file is a Web Part description file (*.webpart or *.dwp) and that it contains well-formed XML. 

मैं पहले से ही एक्सएमएल ऑनलाइन सत्यापनकर्ता का उपयोग करके मान्य और इस बयान

<?xml version="1.0" encoding="utf-16"?> 

हटाया के रूप में इस सत्यापनकर्ता के अनुसार नहीं अच्छी तरह से Formex एक्सएमएल के कारण एक है, लेकिन फिर भी प्रयास विफल है है, एक ही त्रुटि हो गई।

कोई विचार? मुझे यह पता नहीं लगा सका कि विशेष रूप से टैब्स संपत्ति पर एक्सएमएल के साथ क्या गलत है।

कोड:

string webPartXml = string.Empty; 
    string pageUrl = currenturl; 

     Guid storageKey = new Guid(webpartid); 

     using (StreamReader sr = new StreamReader(@"C:\tab.txt")) 
     {    
      webPartXml = sr.ReadToEnd();     
     } 
     webPartXml = webPartXml.Replace("&lt;", "<").Replace("&gt;",">"); 

     try 
     { 
      svc.SaveWebPart2(pageUrl, storageKey, webPartXml, WebpartpagesSvc.Storage.Shared, false); 
     }catch(Exception err) 
     { 
      throw; 
     } 

Tab.txt (Tab.webpart)

<webParts> 
    <webPart xmlns="http://schemas.microsoft.com/WebPart/v3"> 
    <metaData> 
     <type name="Test.TabWebPart, Test, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c9e6068352095bx6" /> 
     <importErrorMessage>Cannot import this web part.</importErrorMessage> 
    </metaData> 
    <data> 
     <properties> 
     <property name="ChromeType" type="chrometype">None</property> 
     <property name="Height" type="unit" /> 
     <property name="PanelHeight" type="int">0</property> 
     <property name="ShowRoundedTabs" type="bool">False</property> 
     <property name="AllowZoneChange" type="bool">True</property> 
     <property name="AllowEdit" type="bool">True</property> 
     <property name="Tabs" type="Test.Tabs, Test, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c9e6068352095bx6">&lt;?xml version="1.0" encoding="utf-16"?&gt; 
&lt;Tabs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt; 
    &lt;TabInfo&gt; 
    &lt;Tab&gt; 
     &lt;Title&gt;HTML-TESTING&lt;/Title&gt;  
    &lt;/Tab&gt; 
    &lt;/TabInfo&gt; 
&lt;/Tabs&gt;</property> 
     <property name="CatalogIconImageUrl" type="string" /> 
     <property name="PanelWidth" type="int">0</property> 
     <property name="AllowConnect" type="bool">True</property> 
     <property name="AllowClose" type="bool">True</property> 
     <property name="HelpMode" type="helpmode">Navigate</property> 
     <property name="ChildTab" type="System.Collections.Specialized.NameValueCollection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934ebb9" /> 
     <property name="Hidden" type="bool">False</property> 
     <property name="Title" type="string">Tab </property> 
     <property name="ChromeState" type="chromestate">Normal</property> 
     <property name="AllowHide" type="bool">True</property> 
     <property name="Description" type="string">for Tab Sample.</property> 
     <property name="AllowMinimize" type="bool">True</property> 
     <property name="TitleUrl" type="string" /> 
     <property name="Width" type="unit" /> 
     <property name="ExportMode" type="exportmode">All</property> 
     <property name="Direction" type="direction">NotSet</property> 
     <property name="HelpUrl" type="string" /> 
     <property name="TitleIconImageUrl" type="string" /> 
     </properties> 
    </data> 
    </webPart> 
</webParts> 

त्रुटि संदेश

base {System.SystemException} = {"Exception of type 'Microsoft.SharePoint.SoapServer.SoapServerException' was thrown."} 
InnerText = "The file you imported is not valid. Verify that the file is a Web Part description file (*.webpart or *.dwp) and that it contains well-formed XML." 
InnerXml = "<errorstring xmlns=\"http://schemas.microsoft.com/sharepoint/soap/\">The file you imported is not valid. Verify that the file is a Web Part description file (*.webpart or *.dwp) and that it contains well-formed XML.</errorstring>" 

उत्तर

0

मुझे लगता है कि यह तब होता है जब आप मूल करने के लिए एक्सएमएल बहाल करने की कोशिश जो इसे तोड़ देता है। क्या आपको वास्तव में कोड की इस पंक्ति की आवश्यकता है:

webPartXml = webPartXml.Replace("&lt;", "<").Replace("&gt;",">"); 

यदि आप इसे हटाते हैं तो क्या होता है? तो यह does not काम, मैं एक्सएमएल से बचने के लिए क्रम में CDATA टैग में मूल्य लपेटकर की सिफारिश करेंगे:

string startTabProperty = @"<property name=""Tabs"" type=""Test.Tabs, Test, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c9e6068352095bx6"">"; 
string endTabProperty = "></property>"; //Note the >< in order to identify correct place 
webPartXml = webPartXml.Replace("&lt;", "<").Replace("&gt;",">"); 
webPartXml = webPartXml.Replace(startTabProperty, startTabProperty + "<![CDATA["); 
webPartXml = webPartXml.Replace(endTabProperty , ">" + "]]>" + "</property>"); 

गुड लक!

0

listUrl & TitleUrl

<Module> 
<File> 
<AllUsersWebPart WebPartZoneID="wzMain" WebPartOrder="2"> 
    <![CDATA[ 
    <webParts> 
    <webPart xmlns="http://schemas.microsoft.com/WebPart/v3"> 
    <metaData> 
    <type name="Microsoft.SharePoint.WebPartPages.XsltListViewWebPart, Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" /> 
    <importErrorMessage>Cannot import this Web Part.</importErrorMessage> 
    </metaData> 
    <data> 
    <properties> 
    <property name="ShowWithSampleData" type="bool">False</property> 
    <property name="Default" type="string" /> 
    <property name="NoDefaultStyle" type="string" null="true" /> 
    <property name="CacheXslStorage" type="bool">True</property> 
    <property name="ViewContentTypeId" type="string" /> 
    <property name="XmlDefinitionLink" type="string" /> 
    <property name="ManualRefresh" type="bool">False</property> 
    <property name="ListUrl" type="string" >Lists/Employee_list</property> 
    <property name="TitleUrl" type="string">/Lists/Employee_list</property> 
    </properties> 
    </data> 
    </webPart> 
    </webParts> 
    ]]> 
    </AllUsersWebPart> 
    </File> 
    </Module> 
में मॉड्यूल के Element.xml & परिवर्तन केवल अपनी सूची नाम पर नीचे की कोड लिखें
संबंधित मुद्दे