C# 尝试写入C的现有XML文件#
事先非常感谢 这是原始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
<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);