Доброго времени суток!
Подскажите, пожалуйста, как изменить текст в файле XML, который лежит на локальном диске, скажем C:\Temp\1.xml?
в технологии XML не силен, а разбираться нет времи, облазил MSDN и тут по поиску, и то что успел нарыть, только запутало...
в общем есть XML, который сформирован на основе шаблона InfoPath:
<?xml version="1.0" encoding="UTF-8"?><?mso-infoPathSolution solutionVersion="1.0.0.2" productVersion="11.0.8034" PIVersion="1.0.0.0" href="file:///C:\My_projects\InfoPath\test.xsn" name="urn:schemas-microsoft-com:office:infopath:test:-myXSD-2007-07-10T06-28-38" ?><?mso-application progid="InfoPath.Document"?>
<my:Doc xmlns:my="http://schemas.microsoft.com/office/infopath/2003/myXSD/2007-07-10T06:28:38" xml:lang="ru">
<my:str>значение поля</my:str>
<my:check>false</my:check>
</my:Doc>
Необходимо изменить значение текста в теге <my:str>, скажем на "новое значение",
делаю так:
string sPath = "C:\Temp\1.xml";
XmlTextWriter writer = null;
XmlTextReader txtreader = null;
reader = new XmlTextReader(sPath);
writer = new XmlTextWriter (sPath, null);
while (reader.Read())
{
if(txtreader.LocalName == "my:str" )
writer.WriteString("НОВОЕ ЗНАЧЕНИЕ");
}
writer.Close();
reader.Close();
но при попытке создать райтер, выдается ошибка — файл уже используется, как можно сделать изменения именно в этом файле?
второй вариант был использовать XmlDocument(), но что-то не понял, как загрузить файл с локального диска
string sPath = "C:\Temp\1.xml";
XmlDocument doc = new XmlDocument();
doc.Load(sPath);
XmlNode node;
XmlElement root = doc.DocumentElement;
node = root.SelectSingleNode("descendant::my:str"); // тут большой вопрос, правильно ли я ищу тег <my:str>?
node.InnerText = DateTime.Now.ToString();
doc.Save("sPath");
в этом случае не получается загрузить файл, и собстно потестить поиск атрибута не удалось..