【问题标题】:Writing/Overwriting to specific XML file from ASP.NET code behind从后面的 ASP.NET 代码写入/覆盖到特定的 XML 文件
【发布时间】:2015-06-08 13:01:29
【问题描述】:

我有一个 XML 世界地图,它基本上需要两个输入(它是一个带有相应 CSS 文件和内容的 XML 文件):国家输入和国家地址。因此,当我手动将数据输入 XML 文件(国家名称和国家地址)时,地图上的国家会改变其颜色,并且将鼠标悬停在该国家/地区上时,我可以看到我输入的内容。

我的数据库中有一个所有国家/地区的列表。所以我在想有什么方法可以让我在所有这些国家从我的数据库写入 XML 文件。我在想这样的事情:

for(int i=0; i<list.count;i++)
{
    list[i].CounryName = //write it into the XML file;
    list[i].CountryUserAddress = //Write it into the XML file;
}

所以这个想法是当 for 循环继续进行时,每个国家都被写入 XML 文件。我没有任何在 ASP.NET 中处理 XML 文件的重要经验,而且我被困在这里。所有这些都应该通过后面的代码来完成。有人可以帮我解决这个问题,或者至少指出我正确的方向吗?

非常感谢!

附:我忘了提到我实际上应该覆盖已经存在的 XML 文件,而不是创建一个新的...

【问题讨论】:

    标签: c# css asp.net xml webforms


    【解决方案1】:

    这是一个示例,说明如何使用您提供的数据执行此操作:

        public string EditDoc()
        {
            string filename = "Path/MyFileName.xml";
            List<string> list = new List<string>();
    
            if (File.Exists(filename)) //we have the file, so update it
            {
                XmlDocument myDoc = new XmlDocument(); //create a document object
                myDoc.Load(filename); //load existing info
                XmlNode root = myDoc.DocumentElement; //the root node ("Country")
                XmlNode nodeToUpdate = root.SelectSingleNode("CountryName"); //select the node to update
    
                nodeToUpdate.Value = "new info"; //give it a new value
    
                myDoc.Save(filename); //save the document
            } 
            else //didn't find the file
            {
                XmlDocument myDoc = new XmlDocument(); //create a new document
    
                XmlNode countryList = myDoc.CreateElement("CountryList");
                myDoc.AppendChild(countryList);
    
                for (int i = 0; i < list.Count; i++)
                {
                    XmlNode country = myDoc.CreateElement("Country"); //create the parent "Country" element
                    myDoc.AppendChild(countryList); //append to the list
    
                    XmlNode countryName = myDoc.CreateElement("CountryName"); //create element for "CountryName"
                    countryName.AppendChild(myDoc.CreateTextNode(list[i].CountryName)); //add data from list index
                    country.AppendChild(countryName); //append this as a child to "Country"
    
                    XmlNode countryUserAddress = myDoc.CreateElement("CountryUserAddress"); //create element for "CountryUserAddress"
                    countryUserAddress.AppendChild(myDoc.CreateTextNode(list[i].CountryUserAddress)); //add data from list index
                    country.AppendChild(countryUserAddress); //append as a child to "Country"
                }
    
                myDoc.Save(filename); //save the document
            }
        }
    

    一般的想法是遍历文档的树并选择要更新的值。可能有更好的方法来做到这一点,但这是我熟悉的方式。同样,你可以用同样的方式创建一个xml文档。

    主题不同,但这极大地帮助了我理解读/写 XML 数据:this link

    编辑:我稍微更新了代码以创建父元素“CountryList”并将数据库中的每个“Country”附加到该元素。该文件最终会出现如下内容:

    <CountryList>
        <Country>
            <CountryName>Blah</CountryName>
            <CountryUserAddress>Blah</CountryUserAddress>
        </Country>
        <Country>
            <CountryName>Blah</CountryName>
            <CountryUserAddress>Blah</CountryUserAddress>
        </Country>
    </CountryList>
    

    【讨论】:

    • 我实际上是通过将 XML 文件的静态部分存储到字符串中来解决它...然后动态添加丢失的部分,这样我就得到了我需要的完整 XML 文件!
    猜你喜欢
    • 2011-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-01
    • 1970-01-01
    • 2011-09-19
    • 1970-01-01
    相关资源
    最近更新 更多