gpt4 book ai didi

c# - 指示 XmlWriterSettings 使用自闭合标签

转载 作者:数据小太阳 更新时间:2023-10-29 01:45:04 26 4
gpt4 key购买 nike

我正在使用 XmlWriterSettings 将 Xml 写入文件。我有只有属性的元素,没有 child 。我希望它们输出为:

<element a="1" /> 

代替

<element a="1"></element>

我可以使用 XmlWriterSettings 来实现吗?

编辑:

代码如下:

private void Mission_Save(string fileName)
{
StreamWriter streamWriter = new StreamWriter(fileName, false);
streamWriter.Write(Mission_ToXml());
streamWriter.Close();
streamWriter.Dispose();

_MissionFilePath = fileName;
}

private string Mission_ToXml()
{
XmlDocument xDoc;
XmlElement root;
XmlAttribute xAtt;

xDoc = new XmlDocument();

foreach (string item in _MissionCommentsBefore)
xDoc.AppendChild(xDoc.CreateComment(item));

root = xDoc.CreateElement("mission_data");
xAtt = xDoc.CreateAttribute("version");
xAtt.Value = "1.61";
root.Attributes.Append(xAtt);
xDoc.AppendChild(root);

//Out the xml's!
foreach (TreeNode node in _FM_tve_Mission.Nodes)
Mission_ToXml_private_RecursivelyOut(root, xDoc, node);

foreach (string item in _MissionCommentsAfter)
xDoc.AppendChild(xDoc.CreateComment(item));


//Make this look good
StringBuilder sb = new StringBuilder();
XmlWriterSettings settings = new XmlWriterSettings();

settings.Indent = true;
settings.IndentChars = " ";
settings.NewLineChars = "\r\n";
settings.NewLineHandling = NewLineHandling.Replace;
settings.OmitXmlDeclaration = true;
using (XmlWriter writer = XmlWriter.Create(sb, settings))
{
xDoc.Save(writer);
}

return sb.ToString();
}

private void Mission_ToXml_private_RecursivelyOut(XmlNode root, XmlDocument xDoc, TreeNode tNode)
{
root.AppendChild(((MissionNode)tNode.Tag).ToXml(xDoc));
foreach (TreeNode node in tNode.Nodes)
Mission_ToXml_private_RecursivelyOut(root, xDoc, node);
}

这里 _FM_tve_Mission 是一个有节点的 TreeView 控件,每个节点都有一个 MissionNode 类的标签,它有 ToXml 方法返回包含这个 MissionNode 转换为 xml 的 XmlNode

最佳答案

您不需要为此进行任何特殊设置:

XmlWriter output = XmlWriter.Create(filepath);
output.writeStartElement("element");
output.writeAttributeString("a", "1");
output.writeEndElement();

这将为您提供 <element a="1" /> 的输出(刚刚在我正在为其编写 xml 的应用程序中对其进行了测试)

基本上,如果您在编写结束元素之前不添加任何数据,它只会为您关闭它。

我还有以下 XmlWriterSettings如果它在默认情况下不工作,它可能是其中之一:

XmlWriterSettings wSettings = new XmlWriterSettings();
wSettings.Indent = true;
wSettings.ConformanceLevel = ConformanceLevel.Fragment;
wSettings.OmitXmlDeclaration = true;
XmlWriter output = XmlWriter.Create(filePathXml, wSettings);

关于c# - 指示 XmlWriterSettings 使用自闭合标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10047939/

26 4 0