как изменить текст в файле XML
От: Sergauskazzz  
Дата: 12.07.07 14:58
Оценка:
Доброго времени суток!

Подскажите, пожалуйста, как изменить текст в файле 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");


в этом случае не получается загрузить файл, и собстно потестить поиск атрибута не удалось..
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.