Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 编辑XML,我完全迷路了_C#_Xml - Fatal编程技术网

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

C# 编辑XML,我完全迷路了,c#,xml,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 eleme

我有这段代码来加载我不确定是否完整的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);
}
我不确定在不同的节点中放置什么,上面的代码是我在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>

6B3051D-2cd1-4325-ad73-7b905f76ffc0
新闻
516401f4-b45c-46ef-b8f4-9d05021ae794
豆荚
0c9cd216-86cf-4a62-884c-1b428150ebac
豆荚
我非常感谢你的帮助

if (element.SelectSingleNode(chooseNode).InnerText == selectedCategory)
选择Node=“ArrayOfCategory/Category”


所以chooseNode的内部文本永远不会是“News”,因为“News”在

下,您的第二个
foreach
中有错误:您是否忘记放置
元素。选择节点
或其他什么

下一件事:您可以直接修改XmlElement,而无需创建新的XmlElement。只有在XmlElement不存在的情况下才能创建(并添加)

我强烈建议您阅读XmlDocument的MSDN文档,更具体地说是
CreateElement
,然后阅读
SelectNodes
演示

此外,您可能需要考虑在字符串前面放置<代码> @ /代码>:


请参见

您的问题是什么?您不应该将xml文件保存在foreach中,只需将其保存在endwell中,它不起作用。我不知怎么写了错误的引用,例如//名称之类。我试图解决它,但它总是卡在if语句中。没有明确问题语句的问题对未来没有价值读者请点击此处。请回答您的问题,以明确您在上述代码中遇到的问题,并提出一个可以回答的具体问题。(不要将其包含在评论中-您的问题应包含其中的信息。)
selectedCategory = "News";