C# XMLWriter正在尝试使用重复属性

C# XMLWriter正在尝试使用重复属性,c#,xml,xmlwriter,C#,Xml,Xmlwriter,更新:更新问题以解决问题是元素而不是属性,并添加了我的XML输出 我必须向应用程序提供一些XML编码的字符串(我不经常使用标记语言,对它们的细微差别也没有太多经验) 我需要发送的格式如下(我无法控制): 在变量的Visual Studio调试器XML视图中生成以下输出: -<ROOT> -<Unit UnitName="XYZ"> <Scheds xmlns="Qty="5""/> <Scheds xmlns="ProdId

更新:更新问题以解决问题是元素而不是属性,并添加了我的XML输出

我必须向应用程序提供一些XML编码的字符串(我不经常使用标记语言,对它们的细微差别也没有太多经验)

我需要发送的格式如下(我无法控制):

在变量的Visual Studio调试器XML视图中生成以下输出:

-<ROOT>       
-<Unit UnitName="XYZ">    
<Scheds xmlns="Qty="5""/>    
<Scheds xmlns="ProdId="360""/>    
<Scheds xmlns="Comments="hhh""/>   
<Scheds xmlns="Qty="66""/>    
<Scheds xmlns="ProdId="356""/>  
<Scheds xmlns="Comments="""/>    
</Unit>       
-<Unit UnitName="ABC">    
<Scheds xmlns="Qty="44""/>    
<Scheds xmlns="ProdId="356""/>    
<Scheds xmlns="Comments="gg""/>    
</Unit>      
</ROOT>
-
-    
-    

XML中不能有重复的属性


示例输出中没有重复的属性,您有重复的元素,这是允许的。在处理元素的开始处写入
Scheds
元素的开头,在结尾处写入
writeedelement()
,这样就可以了。

XML中不能有重复的属性


示例输出中没有重复的属性,您有重复的元素,这是允许的。在处理元素的开始处写入
Scheds
元素的开头,并在结尾处写入
writeedelement()
,这样就可以了。

看起来您的使用不正确。第二个参数不是属性,而是名称空间URI。这里有一个简单的例子

XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.OmitXmlDeclaration = true;
XmlWriter writer = XmlWriter.Create(Console.Out, settings);

writer.WriteStartElement("ROOT");

writer.WriteStartElement("Unit");
writer.WriteAttributeString("UnitName", "Unit XYZ");
writer.WriteEndElement();

writer.WriteStartElement("Scheds");
writer.WriteAttributeString("Qty", "5");
writer.WriteAttributeString("ProdId", "214");
writer.WriteAttributeString("Comments", "Need by 1/25");
writer.WriteEndElement();

// Write the close tag for the root element.
writer.WriteEndElement();
writer.Close(); 
这将产生以下输出:

<ROOT>
  <Unit UnitName="Unit XYZ" />
  <Scheds Qty="5" ProdId="214" Comments="Need by 1/25" />
</ROOT>

看起来你用错了。第二个参数不是属性,而是名称空间URI。这里有一个简单的例子

XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.OmitXmlDeclaration = true;
XmlWriter writer = XmlWriter.Create(Console.Out, settings);

writer.WriteStartElement("ROOT");

writer.WriteStartElement("Unit");
writer.WriteAttributeString("UnitName", "Unit XYZ");
writer.WriteEndElement();

writer.WriteStartElement("Scheds");
writer.WriteAttributeString("Qty", "5");
writer.WriteAttributeString("ProdId", "214");
writer.WriteAttributeString("Comments", "Need by 1/25");
writer.WriteEndElement();

// Write the close tag for the root element.
writer.WriteEndElement();
writer.Close(); 
这将产生以下输出:

<ROOT>
  <Unit UnitName="Unit XYZ" />
  <Scheds Qty="5" ProdId="214" Comments="Need by 1/25" />
</ROOT>

我已经更新了我的代码和输出-仍然与元素有一些问题我已经更新了我的代码和输出-仍然与元素有一些问题
foreach(PLYOrder p in t.Item2)
{ 
    writer.WriteStartElement("Scheds");
    writer.WriteAttributeString("Qty", p.Qty.ToString());
    writer.WriteAttributeString("ProdId", p.Product.Id.ToString());
    writer.WriteAttributeString("Comments", p.Comments);
    writer.WriteEndElement();
}