我需要生成以下输出:
<complement12:Complement xsi:schemaLocation="http://www.example.com/complement12 http://www.example.com/sub/files/complement12.xsd" version="1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:complement12="http://www.example.com/complement12" />我是这样做的:
var settings = new XmlWriterSettings {Indent = true};
using (var sw = new StringWriter())
{
using (var writer = XmlWriter.Create(sw, settings))
{
writer.WriteStartDocument();
writer.WriteStartElement("complement12", "Complement", @"http://www.example.com/complement12");
writer.WriteAttributeString("xsi", "schemaLocation", "http://www.w3.org/2001/XMLSchema-instance",
"http://www.example.com/complement12 http://www.example.com/sub/files/complement12.xsd");
writer.WriteAttributeString("version", "1.1");
writer.WriteEndElement();
writer.WriteEndDocument();
}
Console.WriteLine(sw);
}但是这个元素应该是嵌套的,我是这样做的:
var settings = new XmlWriterSettings {Indent = true};
using (var sw = new StringWriter())
{
using (var writer = XmlWriter.Create(sw, settings))
{
writer.WriteStartDocument();
writer.WriteStartElement("doc", "Document", @"http://www.example.com/sub");
writer.WriteAttributeString("xsi", "schemaLocation", "http://www.w3.org/2001/XMLSchema-instance",
"http://www.example.com/sub http://www.example.com/sub/files/doc20.xsd");
writer.WriteStartElement("complement12", "Complement", @"http://www.example.com/complement12");
writer.WriteAttributeString("xsi", "schemaLocation", "http://www.w3.org/2001/XMLSchema-instance",
"http://www.example.com/complement12 http://www.example.com/sub/files/complement12.xsd");
writer.WriteAttributeString("version", "1.1");
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndDocument();
}
Console.WriteLine(sw);
}我不知道为什么,嵌套元素的结果是不同的,因为没有生成属性"xmlns:xsi“。
<doc:Document xsi:schemaLocation="http://www.example.com/sub http://www.example.com/sub/files/doc20.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:doc="http://www.example.com/sub"><complement12:Complement xsi:schemaLocation="http://www.example.com/complement12 http://www.example.com/sub/files/complement12.xsd" version="1.1" xmlns:complement12="http://www.example.com/complement12" />
小提琴here中的示例。
发布于 2018-03-03 02:09:41
xsi前缀是在父节点中定义的,因此编写器省略了继承的前缀定义。
https://stackoverflow.com/questions/49074738
复制相似问题