C#编辑XML,我完全迷失了

时间:2014-10-28 13:54:59

标签: c# xml

我有这个代码来加载xml文件,我不确定它是否完整。这是我的代码。

public void updateXML(string xmlFile, string chooseNode, string chooseSingleNode, string newNode, string selectedCategory)
{
    XmlDocument xml = new XmlDocument();
    xml.Load(xmlFile);

    foreach (XmlElement element in xml.SelectNodes(chooseNode))
    {
        foreach (XmlElement element1 in element)
        {
            if (element.SelectSingleNode(chooseNode).InnerText == selectedCategory)
            {

                XmlNode newvalue = xml.CreateElement(newNode);
                newvalue.InnerText = "MODIFIED";
                element.ReplaceChild(newvalue, element1);

                xml.Save(xmlFile);
            }
        }
    }

下面是我最后使用的方法,我设置了xmlfile等。 (updateXML方法位于“data.cs”中,从存储库中调用。

public void editCategory(string newNode)
{
    string xmlFile = "Category.xml";
    string chooseNodes = "ArrayOfCategory/Category";
    string chooseSingleNode = "//Name";
    string selectedCategory = "News";

    repository.Update(xmlFile, chooseNodes, newNode, chooseSingleNode, selectedCategory);
}

我不确定在不同的Nodes等中放入了什么,我在Stackoverflow上找到了上面的代码。 - 下面是我要编辑的XML文件。

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfCategory xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <Category>
        <Id>6b30511d-2cd1-4325-ad73-7b905f76ffc0</Id>
        <Name>News</Name>
    </Category>
    <Category>
        <Id>516401f4-b45c-46ef-b8f4-9d05021ae794</Id>
        <Name>Pods</Name>
    </Category>
    <Category>
        <Id>0c9cd216-86cf-4a62-884c-1b428150ebac</Id>
        <Name>Pods</Name>
    </Category>
</ArrayOfCategory>

我真的很感谢你的帮助。

2 个答案:

答案 0 :(得分:0)

if (element.SelectSingleNode(chooseNode).InnerText == selectedCategory)
  

ChooseNode =&#34; ArrayOfCategory / Category&#34;

selectedCategory = "News";

所以chooseNode的innertext永远不会是&#34; News&#34;因为&#34;新闻&#34;在<Name>

答案 1 :(得分:0)

你的第二个foreach出现了问题:你忘记了element.SelectNodes或其他什么?

接下来:您可以直接修改XmlElement,无需创建新的XmlElement。只有当它不存在时才创建(并添加它)。

我强烈建议您在CreateElement演示文稿之后查看XmlDocument的MSDN文档,更具体地说是SelectNodesthis simple example

此外,您可能需要考虑在字符串前添加@: 见What's the @ in front of a string in C#?