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