我試圖更新xml的屬性。我的問題是,當我更新,後來我讀了我的XML我有一個例外。我一直在尋找這個問題,我不知道如何,但在XML結束時出現我的一般關閉標記的最後一個字符。有時三個或兩個字符最後或只有字符>
。這個問題不會總是發生。有時在第二次,其他人在第四次,其他在第十次...我把一個片段吼叫。非常感謝,併爲我的英語感到難過。XML更新屬性:在末尾添加字符並失敗
PD:我不使用Linq
我的XML
// At the end of xml file appears this fragment
<?xml version="1.0"?>
<MYPRINCIPALTAG>
<TAG DATE="01/01/01"></TAG>
</MYPRINCIPALTAG>AG>
更多代碼;-)
// Read XML
System.IO.FileStream fs = new System.IO.FileStream (path, System.IO.FileMode.Open, System.IO.FileAccess.Read);
XmlTextReader reader = new XmlTextReader (fs);
while (reader.Read()) {
switch (reader.NodeType) {
case XmlNodeType.Element:
switch (reader.Name) {
case 'TAG':
string pubdate = reader.GetAttribute (0);
break;
}
break;
}
fs.Close();
public static XmlNode OpenXmlNode(string path, ref System.IO.FileStream fs, ref XmlDocument doc) {
fs = new System.IO.FileStream (path, System.IO.FileMode.Open, System.IO.FileAccess.ReadWrite);
doc = new XmlDocument();
doc.Load (fs);
fs.Flush();
fs.Close();
return doc.DocumentElement;
}
public static void CloseXmlNode(string path, ref System.IO.FileStream fs, ref XmlDocument doc) {
fs = new System.IO.FileStream (path, System.IO.FileMode.Open, System.IO.FileAccess.ReadWrite);
doc.Save (fs);
fs.Flush();
fs.Close();
}
public static Boolean UpdateXML(string path, string id_tag) {
try {
System.IO.FileStream fs = null;
XmlDocument doc = new XmlDocument();
XmlNode element = OpenXmlNode (path, ref fs, ref doc);
// Change Date
element.ChildNodes[0].Attributes.GetNamedItem ("date").Value = DateTime.Now.ToString ("dd/MM/yy");
for (int count = 1; count < doc.DocumentElement.ChildNodes.Count; count++) {
if ((doc.DocumentElement.ChildNodes[count].Attributes.GetNamedItem ("ID").Value).Equals (id_tag)) {
for (int i = 0; i < doc.DocumentElement.ChildNodes[count].ChildNodes[0].ChildNodes.Count; i++) {
doc.DocumentElement.ChildNodes[count].ChildNodes[0].ChildNodes[i].Attributes.GetNamedItem ("STATE").Value = "ok";
}
break;
}
}
CloseXmlNode (path, ref fs, ref doc);
return true;
} catch (Exception e) {
return false;
}
}
在編輯之前,文件的外觀如何? 也讓我們看看你的完整代碼 –
我有很多代碼。 ;-)最後,我把更新XML的方法。在另一種方法中,我讀取了xml,但我使用了微軟提供的代碼。出於這個原因,我不把這個代碼。我的XML之前爲:<?XML版本= 「1.0」> MYPRINCIPALTAG> –