C# 尝试写入C的现有XML文件#

C# 尝试写入C的现有XML文件#,c#,xml,C#,Xml,事先非常感谢 这是原始XML文件 <my:Incident> <my:Category>This is for Category</my:Category> <my:Status>`Status is Close`</my:Status> <my:Description>`This is the description part</my:Description&g

事先非常感谢

这是原始XML文件

<my:Incident>
       <my:Category>This is for Category</my:Category>
              <my:Status>`Status is Close`</my:Status>
       <my:Description>`This is the description part</my:Description>
</my:Incident>
我试图实现,但收到以下错误消息:

名称中不能包含十六进制值0x3A的“:”字符

如果有人能告诉我我的代码哪里做错了,我将不胜感激


我稍微修改了代码。但现在我无法将其写入现有的XML文件

这是我的代码:

public void writerXMLTest(string fileName)
        {

            if (!File.Exists(fileName))
            {
                XmlTextWriter writer = new XmlTextWriter(fileName, null);
                writer.WriteStartElement("Incident", "my");
                writer.WriteEndElement();
                writer.Close();
            }

            XDocument doc = XDocument.Load(fileName);
            XElement demoNode = new XElement("SummaryDescription", "Test Test");


            Console.WriteLine("I write it!!!!!"); 
        }
这是错误的:

 writer.WriteStartElement("my:Incident");
这是正确的:

 writer.WriteStartElement("Incident", "blablablaSpace:my");
编辑:

 writer.WriteStartElement("Incident", "http://schemas.microsoft.com/office/infopath/2003/myXSD/2005-09-22T20:42:56:my");

您的“my:”前缀是一个名称空间。您必须使用TagName=“Incident”,Namespace=“my”。

Microsoft提供了有关将XmlTextWriter与命名空间一起使用的文档


这里有几个问题。首先,您的“原始XML”无效,因为您尚未定义“我的”命名空间。要么您没有向我们展示整个XML文件,要么您正在手工编写无效的XML。不要那样做

我无法将其写入现有的XML文件

“我不能”是什么意思?它抛出异常?例外情况是什么?或者,您的意思是运行代码后,您的文件保持不变?这并不奇怪,因为您的代码实际上什么都没有做

XDocument doc = XDocument.Load(fileName);
这将从磁盘加载您的XML文件。。。然后什么都不做。它不会更改文件

XElement demoNode = new XElement("SummaryDescription", "Test Test");
这将创建一个新的XML元素,它与原始文件或其他任何内容完全无关。。。然后把它扔掉,什么也不做。您尚未将其添加到任何位置或将任何内容保存到文件中

我想在我的:事件下添加其他字段

如果要将
demoNode
添加到文件中,首先必须找到
Incident
节点:

XElement e = doc.Descendants(XName.Get("Incident", nameSpace)).FirstOrDefault<XElement>();
然后保存更改的文档

doc.Save(fileName);

我修复了这个错误,但现在我无法将它写入现有的XMLFile@yyc2001这是什么意思?我希望你没有使用我写的文字:)@FailedDec不是真的我修改了我的帖子来显示我的更新代码。@yyc201我的更新代码是什么?是不是有点像xmlns:my=“foo.html.com”my只是原始XML文件中的一个名称空间<代码>xmlns:my=”http://schemas.microsoft.com/office/infopath/2003/myXSD/2005-09-22T20:42:56“
XElement e = doc.Descendants(XName.Get("Incident", nameSpace)).FirstOrDefault<XElement>();
if (e != null)
{
    e.Add( new XElement(XName.Get("SummaryDescription", nameSpace), "Test Test") );
}
doc.Save(fileName);