我正在處理一個需要將所有SQL連接和查詢信息存儲在XML文件中的項目。爲了讓我的項目可配置,我試圖創建一種方法讓用戶通過一系列文本框配置他的sql連接字符串信息(數據源,目錄,用戶名和密碼)。此輸入將被保存到SQL文檔中的相應節點。無法保存對Sharepoint 2010文檔庫中存儲的XML文檔的更改
我可以從XML文件中獲取當前信息,並在文本框中顯示該信息以供用戶查看和更正,但在保存更改時遇到錯誤。
這裏是我用來更新和保存xml文檔的代碼。
protected void submitBtn_Click(object sender, EventArgs e)
{
SPFile file = methods.web.GetFile("MyXMLFile.xml");
myDoc = new XmlDocument();
byte[] bites = file.OpenBinary();
Stream strm1 = new MemoryStream(bites);
myDoc.Load(strm1);
XmlNode node;
node = myDoc.DocumentElement;
foreach (XmlNode node1 in node.ChildNodes)
{
foreach (XmlNode node2 in node1.ChildNodes)
{
if (node2.Name == "name1")
{
if (node2.InnerText != box1.Text)
{
}
}
if (node2.Name == "name2")
{
if (node2.InnerText != box2.Text)
{
}
}
if (node2.Name == "name3")
{
if (node2.InnerText != box3.Text)
{
node2.InnerText = box3.Text;
}
}
if (node2.Name == "name4")
{
if (node2.InnerText != box4.Text)
{
}
}
}
}
myDoc.Save(strm1);
}
此時大部分條件都是空的,因爲我仍在測試。如我所說,代碼很有效,直到最後一行。此時,我收到錯誤「內存流不可擴展」。我明白,使用內存流來更新存儲的文件是不正確的,但我無法找出正確的方法來做到這一點。
我試着在Memory stream is not expandable的類似問題中實現解決方案,但是這種情況與我的不同,因此實現對我來說沒有任何意義。任何澄清將不勝感激。
感謝您的答覆,rwisch。不幸的是,這段代碼在「myDoc.Load(strm1)」這行中拋出一個錯誤,它說「XmlException被用戶代碼未處理:根元素缺失。」我查看了你鏈接到的博客文章,但與我正在嘗試做的有點不同。我正在嘗試使用直接的XML文件,而不是Office文檔。對不起,如果我很厚,但我沒有看到連接。 – bmurrell30
更新:發現此錯誤意味着xml文檔的根節點丟失,但我有一個。我甚至通過w3schools驗證器運行我的xml,並確認它是很好的xml。那麼是什麼給了? – bmurrell30
更新2:對於咯咯笑,我嘗試刪除?標記來自<?xml聲明,所以我將不得不使用明確的關閉標記。沒有變化 – bmurrell30