C#编辑XML,我完全迷失了方向
本文关键字:迷失 方向 编辑 XML | 更新日期: 2023-09-27 18:28:03
我有这段代码来加载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>
我真的很感谢你的帮助。
if (element.SelectSingleNode(chooseNode).InnerText == selectedCategory)
ChooseNode="ArrayOfCategory/Category"
selectedCategory = "News";
因此,chooseNode的内部文本永远不会是"News",因为"News"在<Name>
下
第二个foreach
有问题:你忘了放element.SelectNodes
什么的吗?
接下来:您可以直接修改XmlElement,而无需创建新的XmlElement。只有当它不存在时,才能创建(并添加)它。
我强烈建议您查看XmlDocument的MSDN文档,更具体地说是CreateElement
和SelectNodes
演示之后的这个简单示例。
此外,您可能需要考虑在字符串前面放一个@
:请参阅What';是C#中字符串前面的@吗?