Met*_*urf 18 .net c# xml xmldocument namespaces
我需要创建一个XmlDocument包含多个名称空间的根元素.我使用的是C#2.0或3.0
这是我的代码:
XmlDocument doc = new XmlDocument();
XmlElement root = doc.CreateElement("JOBS", "http://www.example.com");
doc.AppendChild(root);
XmlElement job = doc.CreateElement("JOB", "http://www.example.com");
root.AppendChild(job);
XmlElement docInputs = doc.CreateElement("JOB", "DOCINPUTS", "http://www.example.com");
job.AppendChild(docInputs);
XmlElement docInput = doc.CreateElement("JOB", "DOCINPUT", "http://www.example.com");
docInputs.AppendChild(docInput);
XmlElement docOutput = doc.CreateElement("JOB", "DOCOUTPUT", "http://www.example.com");
docOutputs.AppendChild(docOutput);
Run Code Online (Sandbox Code Playgroud)
目前的输出:
<JOBS xmlns="http://www.example.com">
<JOB>
<JOB:DOCINPUTS xmlns:JOB="http://www.example.com">
<JOB:DOCINPUT />
</JOB:DOCINPUTS>
<JOB:DOCOUTPUTS xmlns:JOB="http://www.example.com">
<JOB:DOCOUTPUT />
</JOB:DOCOUTPUTS>
</JOB>
</JOBS>
Run Code Online (Sandbox Code Playgroud)
但是,我想要的输出是:
<JOBS xmlns:JOBS="http://www.example.com" xmlns:JOB="http://www.example.com">
<JOB>
<JOB:DOCINPUTS>
<JOB:DOCINPUT />
</JOB:DOCINPUTS>
<JOB:DOCOUTPUTS>
<JOB:DOCOUTPUT />
</JOB:DOCOUTPUTS>
</JOB>
</JOBS>
Run Code Online (Sandbox Code Playgroud)
我的问题:我如何创建一个XmlDocument包含多个名称空间的根元素?
Opp*_*nal 28
以下将生成您在上面请求的所需输出:
XmlDocument doc = new XmlDocument();
XmlElement root = doc.CreateElement("JOBS");
root.SetAttribute("xmlns:JOBS", "http://www.example.com");
root.SetAttribute("xmlns:JOB", "http://www.example.com");
doc.AppendChild(root);
XmlElement job = doc.CreateElement("JOB");
XmlElement docInputs = doc.CreateElement("JOB", "DOCINPUTS", "http://www.example.com");
XmlElement docInput = doc.CreateElement("JOB", "DOCINPUT", "http://www.example.com");
docInputs.AppendChild(docInput);
job.AppendChild(docInputs);
XmlElement docOutputs = doc.CreateElement("JOB", "DOCOUTPUTS", "http://www.example.com");
XmlElement docOutput = doc.CreateElement("JOB", "DOCOUTPUT", "http://www.example.com");
docOutputs.AppendChild(docOutput);
job.AppendChild(docOutputs);
doc.DocumentElement.AppendChild(job);
Run Code Online (Sandbox Code Playgroud)
但是,在您的示例/所需输出中,对于两个不同的前缀使用相同的XML命名空间似乎很奇怪.希望这可以帮助.
您可以在元素上显式创建名称空间前缀属性.然后,当您添加使用相同名称空间和相同前缀创建的后代元素时,XmlDocument将确定它不需要向元素添加名称空间声明.
运行此示例以查看其工作原理:
using System;
using System.Xml;
static void Main(string[] args)
{
XmlDocument d = new XmlDocument();
XmlElement e = d.CreateElement("elm");
d.AppendChild(e);
d.DocumentElement.SetAttribute("xmlns:a", "my_namespace");
e = d.CreateElement("a", "bar", "my_namespace");
d.DocumentElement.AppendChild(e);
e = d.CreateElement("a", "baz", "other_namespace");
d.DocumentElement.AppendChild(e);
e = d.CreateElement("b", "bar", "my_namespace");
d.DocumentElement.AppendChild(e);
d.Save(Console.Out);
Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
45954 次 |
| 最近记录: |