jon*_*nii 11 c# xml linq-to-xml
在写出xml文档时,我需要编写所有自闭文本,不带任何空格,例如:
<foo/>
Run Code Online (Sandbox Code Playgroud)
代替:
<foo />
Run Code Online (Sandbox Code Playgroud)
这样做的原因是,我正在与之接口的供应商系统会引发其他问题.在理想的世界中,供应商会修复他们的系统,但我不打算在短时间内发生这种情况.让XmlWriter在没有空格的情况下输出自闭关标签的最佳方法是什么?
我目前的计划是做类似的事情:
return xml.Replace(" />", "/>");
Run Code Online (Sandbox Code Playgroud)
显然这远非理想.是否可以为这一个操作继承XmlWriter?是否有一个设置作为我忽略的XmlWriterSettings的一部分?
我认为没有这样的选项可以避免自闭标签中的一个空格。根据 MSDN 的说法XmlTextWriter:
当写入空元素时,标签名称和结束标签之间会添加一个额外的空格,例如 。这提供了与旧版浏览器的兼容性。
希望您可以编写<elementName></elementName>语法而不是不需要的语法<elementName />来执行此XmlWriter.WriteFullEndElement操作,例如:
using System.Xml;
..
static void Main(string[] args)
{
XmlWriterSettings xmlWriterSettings = new XmlWriterSettings();
xmlWriterSettings.Indent = true;
xmlWriterSettings.IndentChars = ("\t");
xmlWriterSettings.OmitXmlDeclaration = true;
XmlWriter writer = XmlWriter.Create("example.xml", xmlWriterSettings);
writer.WriteStartElement("root");
writer.WriteStartElement("element1");
writer.WriteEndElement();
writer.WriteStartElement("element2");
writer.WriteFullEndElement();
writer.WriteEndElement();
writer.WriteEndDocument();
writer.Close();
}
Run Code Online (Sandbox Code Playgroud)
生成以下 XML 文档:
<root>
<element1 />
<element2></element2>
</root>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4959 次 |
| 最近记录: |