gpt4 book ai didi

c# - XmlWriter 停止写入 StringBuilder

转载 作者:太空宇宙 更新时间:2023-11-03 21:57:54 25 4
gpt4 key购买 nike

我有一个奇怪的问题。当遍历数组并使用 XMLWriter 和 StringBuilder 创建 XML 时,字符串将停止添加到字符串构建器中。在出现此错误时调用 XmlDoc.LoadXml 方法之前,我没有收到任何错误:

发生了意外的文件结束。以下元素未关闭:ID、Port、Ports。第 1256 行,第 39 位。

当我单步执行代码时,循环继续并且没有抛出任何错误,但没有向字符串构建器添加任何内容。

有什么想法吗?谢谢

public XmlElement LclExportGetPorts()
{
DAL.DALSoapClient soapy = new DAL.DALSoapClient();
DAL.DALStringString[] ports = soapy.EnumPortsWeb(false);
XmlDocument XmlDoc = new XmlDocument();
StringBuilder SB = new StringBuilder();
XmlWriterSettings XmlSettings = new XmlWriterSettings();
XmlSettings.Indent = true;
using (XmlWriter writer = XmlWriter.Create(SB, XmlSettings))
{
writer.WriteStartDocument();
writer.WriteStartElement("Ports");
foreach (var p in ports)
{
writer.WriteStartElement("Port");
writer.WriteElementString("ID", p.Key);
writer.WriteElementString("Name", p.Value);
writer.WriteEndElement();
}
writer.WriteEndElement();
writer.WriteEndDocument();
string temp = writer.ToString();
XmlDoc.LoadXml(SB.ToString());
}
XmlElement Result = XmlDoc.DocumentElement;
return Result;
}

最佳答案

我认为使用 Linq2Xml 更容易。 (也不需要先形成一个 xml 字符串,然后按照 Wug 的建议解析它)

public XElement LclExportGetPorts()
{
......
XElement xDoc = new XElement("Ports");
foreach (var p in ports)
{
xDoc.Add(new XElement("Port", new XElement("ID", p.ID),
new XElement("Name", p.Name)));
}
return xDoc;
}

关于c# - XmlWriter 停止写入 StringBuilder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11456259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com