我正在用c#创建一个XML文档。
它现在全部聚集在一起,但由于某种原因,我一直都会遇到错误。
这是我的代码:
FileStream Slide2XmlStream = new FileStream(slide2Xml, FileMode.Create, FileAccess.Write);
XmlWriter slide2XmlWriter = null;
try
{
XmlWriterSettings contentTypesSettings = new XmlWriterSettings();
contentTypesSettings.Indent = true;
slide2XmlWriter = XmlWriter.Create(Slide2XmlStream, contentTypesSettings);
slide2XmlWriter.WriteStartDocument(true);
slide2XmlWriter.WriteStartElement( "p", "sld","http://schemas.openxmlformats.org/presentationml/2006/main" );
slide2XmlWriter.WriteAttributeString("r", "http://schemas.openxmlformats.org/officeDocument/2006/relationships");
slide2XmlWriter.WriteAttributeString( "a","http://schemas.openxmlformats.org/drawingml/2006/main");
slide2XmlWriter.WriteStartElement( "p", "cSld", null);
slide2XmlWriter.WriteStartElement( "p", "spTree", null );
slide2XmlWriter.WriteStartElement( "p", "nvGrpSpPr", null );
slide2XmlWriter.WriteStartElement( "p", "cNvpr", null );
slide2XmlWriter.WriteAttributeString("name", "");
slide2XmlWriter.WriteAttributeString("id", "1");
slide2XmlWriter.WriteEndElement();
slide2XmlWriter.WriteStartElement( "p", "cNvGrpSpPr", null );
slide2XmlWriter.WriteEndElement();
slide2XmlWriter.WriteStartElement( "p", "nvPr", null );
slide2XmlWriter.WriteEndElement();
slide2XmlWriter.WriteEndElement();
slide2XmlWriter.WriteStartElement( "p", "grpSpPr", null );
slide2XmlWriter.WriteStartElement( "a", "xfrm", null );
slide2XmlWriter.WriteStartElement( "a", "off", null );
slide2XmlWriter.WriteAttributeString("y", "0");
slide2XmlWriter.WriteAttributeString("x", "0");
slide2XmlWriter.WriteEndElement();
错误一直出现在方法开头的“a”前缀上。 任何帮助都将真正得到应用。
答案 0 :(得分:1)
在XML中,元素可以在命名空间中,也可以不在(它被认为是后向考虑模式,有时也称为“空命名空间”)。如果您希望它在null命名空间中,这是您在方法的 end 附近请求的,那么您就不能请求命名空间前缀。无法将名称空间前缀绑定到“null名称空间”。
反过来是可能的。可能没有前缀,元素可能位于命名空间(默认命名空间)中,也不位于命名空间( null 命名空间)中。这取决于序列化XML文档中是否存在xmlns
属性。
答案 1 :(得分:0)
我已经修好了。我需要允许xmlns前缀并允许字符串值为null:
slide2XmlWriter.WriteAttributeString("的xmlns""",NULL," HTTP://schemas.openxmlformats.org/drawingml/2006/main") ;