非常感谢你提前
这是原始的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>
Run Code Online (Sandbox Code Playgroud)
我想添加其他字段 my:Incident
这是一个例子:
<my:Incident>
<my:Category>This is for Category</my:Category>
<my:Status>`Status is Close`</my:Status>
<my:SummaryDescription>This is the summary</my:SummaryDescription>
<my:Description>`This is the description part</my:Description>
</my:Incident>
Run Code Online (Sandbox Code Playgroud)
我试图实现,但我收到此错误消息:
':'字符,十六进制值0x3A,不能包含在名称中.
public void writerXMLTest(string fileName)
{
if (!File.Exists(fileName))
{
XmlTextWriter writer = new XmlTextWriter(fileName, null);
writer.WriteStartElement("my:Incident");
writer.WriteEndElement();
writer.Close();
}
XDocument doc = XDocument.Load(fileName);
XElement demoNode = new XElement("my:Incident");
demoNode.Add(new XElement("my:SummaryDescription", "Test Test"));
Console.WriteLine("I write it!!!!!");
}
Run Code Online (Sandbox Code Playgroud)
如果有人能指导我在我的代码中做错了,我将不胜感激.
我稍微修改了一下代码.但现在我无法将其写入现有的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!!!!!");
}
Run Code Online (Sandbox Code Playgroud)
这是错的:
writer.WriteStartElement("my:Incident");
Run Code Online (Sandbox Code Playgroud)
这是正确的:
writer.WriteStartElement("Incident", "blablablaSpace:my");
Run Code Online (Sandbox Code Playgroud)
编辑:
writer.WriteStartElement("Incident", "http://schemas.microsoft.com/office/infopath/2003/myXSD/2005-09-22T20:42:56:my");
Run Code Online (Sandbox Code Playgroud)
这里有几个问题。首先,您的“原始 XML”无效,因为您尚未定义“my”命名空间。您可能没有向我们展示整个 XML 文件,或者您正在手动编码无效的 XML。不要那样做。
我无法将其写入现有的 XML 文件。
“我无能为力”是什么意思?它抛出异常?什么是例外?或者你的意思是你的文件在运行代码后没有改变?这并不奇怪,因为您的代码实际上没有执行任何操作。
XDocument doc = XDocument.Load(fileName);
Run Code Online (Sandbox Code Playgroud)
这会从磁盘加载您的 XML 文件...然后不对其执行任何操作。它不会更改文件。
XElement demoNode = new XElement("SummaryDescription", "Test Test");
Run Code Online (Sandbox Code Playgroud)
这会创建一个新的 XML 元素,与doc原始文件或其他任何内容完全无关……然后将其丢弃,而不对其进行任何操作。您尚未将其添加到任何地方或将任何内容保存到文件中。
我想在我的:事件下添加其他字段
如果要添加demoNode到文件中,首先必须找到节点Incident:
XElement e = doc.Descendants(XName.Get("Incident", nameSpace)).FirstOrDefault<XElement>();
Run Code Online (Sandbox Code Playgroud)
将新元素添加到其中:
if (e != null)
{
e.Add( new XElement(XName.Get("SummaryDescription", nameSpace), "Test Test") );
}
Run Code Online (Sandbox Code Playgroud)
然后保存修改后的文档
doc.Save(fileName);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2830 次 |
| 最近记录: |