Emily Alice Ответов: 3

Как изменить значение элемента или узла в XML-файле


Привет всем, у меня есть вопрос, что у меня есть xml-файл, я добавляю его в свой проект C# Win Form, теперь я хочу изменить значение 1 узла или элемента, так что же мне нужно сделать? Пожалуйста, дайте мне руководство или ссылку или пример проекта для справки, большое спасибо.

Вот демонстрационный файл xml и демонстрационная картинка.

<edit lang="xml"><?xml version="1.0" encoding="utf-8"?>
<data>
    <book>
    <bookID>1111</bookID>
    <bookName>English</bookName>
    <bookPrice>2$</bookPrice>
    </book>
    <book>
    <bookID>222</bookID>
    <bookName>USA</bookName>
    <bookPrice>3$</bookPrice>
    </book>
    <book>
    <bookID>3333</bookID>
    <bookName>Singapore</bookName>
    <bookPrice>4$</bookPrice>
    </book>
</data></edit>


http://i1055.photobucket.com/albums/s505/vn_photo/222.jpg[^]

3 Ответов

Рейтинг:
2

Pro Idiot

Проверить это Статьи проекта Кодекса


Рейтинг:
2

MT_

Есть различные способы достичь того же.

Если вы хотите продолжать читать последовательно, вы можете использовать XmlReader.

Если вы хотите прочитать / обновить/удалить/вставить в определенном месте, вы можете использовать два подхода
1. XmlDocument и XPath.
2. LinQ to XML

Для подхода XmlDocument сначала вы объявляете переменную и загружаете xml.

XmlDocument xDoc = new XmlDocument();
xDoc.Load("YourFile.Xml");

Затем, вы прочитали, как
string nodeValue = xDoc .DocumentElement.SelectSingleNode("NodeName").InnerText;


Вы можете обновить значение, например
xDoc.DocumentElement.SelectSingleNode("NodeName").InnerText = newValue;

Обратите внимание, что в приведенном выше коде "NodeName на самом деле является Xpath. Вы можете дать его как Node/ChildNode/GrandChildNode и так далее. Более подробную информацию о xPath вы можете найти по адресу http://www.w3schools.com/xpath/default.asp[^]

Надеюсь, это поможет. Если он это сделает, отметьте его как ответ/upvote.

Спасибо
Милинд


Рейтинг:
1

sivakumarganga

private void button1_Click(object sender, EventArgs e)
        {
            DataSet ds = new DataSet();
            string strBookID = "1111";
            string strBookCurName = "English";
            string strBookNewName = "Koria";
            ds.ReadXml("data.xml");
            if (ds.Tables.Count != 0)
            {
                for (int intLoop = 0; intLoop < ds.Tables[0].Rows.Count; intLoop++)
                {
                    if (ds.Tables[0].Rows[intLoop]["bookID"].ToString() == strBookID)
                    {
                        if (ds.Tables[0].Rows[intLoop]["bookName"].ToString() == strBookCurName)
                        {
                            ds.Tables[0].Rows[intLoop]["bookName"] = strBookNewName;
                            ds.AcceptChanges();
                        }
                    }
                }
                ds.WriteXml("data.xml");
            }


        }