- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要将 XmlWriter 的 XmlWriterSettings 的 OmitXmlDeclaration 属性设置为 false 以不创建 XML 声明。问题是我通过调用 XPathNavigator.AppendChild() 方法创建了 XmlWriter。代码如下:
public String GetEntityXml<T>(List<T> entities)
{
XmlDocument xmlDoc = new XmlDocument();
XPathNavigator nav = xmlDoc.CreateNavigator();
using (XmlWriter writer = nav.AppendChild())
{
XmlSerializer ser = new XmlSerializer(typeof(List<T>), new XmlRootAttribute(typeof(T).Name + "_LIST"));
ser.Serialize(writer, entities);
}
StringWriter stringWriter = new StringWriter();
XmlTextWriter xmlTextWriter = new XmlTextWriter(stringWriter);
xmlDoc.WriteTo(xmlTextWriter);
string resultString = stringWriter.ToString();
stringWriter.Close();
xmlTextWriter.Close();
return resultString;
}
知道如何序列化 List 而没有 XML 声明吗?
最佳答案
当我执行你的代码时,我没有得到 XML 声明。序列化 List<int>
给我:
<Int32_LIST xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<int>5</int>
<int>7</int>
<int>2</int>
</Int32_LIST>
请注意 OmitXmlDeclaration
的“XML 声明”指的是通常类似于:
<?xml version="1.0" encoding="UTF-8" ?>
如果您指的是 xmlns
部分,那么这些被称为“XML namespace declarations”,并且可以通过初始化 XmlSerializerNamespaces
来消除。具有默认空 namespace 的实例,并将其传递给您的 Serialize
方法:
XmlSerializer ser = new XmlSerializer(typeof(List<T>), new XmlRootAttribute(typeof(T).Name + "_LIST"));
var namespaces = new XmlSerializerNamespaces(new[] { new XmlQualifiedName("", "") });
ser.Serialize(writer, entities, namespaces);
下面是一个缩短的实现,它实现了与您的代码相同的结果:
public String GetEntityXml<T>(List<T> entities)
{
var sb = new StringBuilder();
var settings = new XmlWriterSettings { OmitXmlDeclaration = true };
using (XmlWriter writer = XmlWriter.Create(sb, settings))
{
XmlSerializer ser = new XmlSerializer(typeof(List<T>), new XmlRootAttribute(typeof(T).Name + "_LIST"));
var namespaces = new XmlSerializerNamespaces(new[] { new XmlQualifiedName("", "") });
ser.Serialize(writer, entities, namespaces);
}
return sb.ToString();
}
关于c# - 从 XPathNavigator.AppendChild() 创建时如何设置 XmlWriter.XmlWriterSettings?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9232060/
我正在使用 XmlWriterSettings 将 Xml 写入文件。我有只有属性的元素,没有 child 。我希望它们输出为: 代替 我可以使用 XmlWriterSettings 来实现吗?
我正在尝试为 XDocument 创建一个 XMLWriter,并对其应用设置,但我不知道如何做。 这是我目前所拥有的。 var writerSettings = new XmlWri
我目前有一些直接实例化 XmlTextWriter 对象的代码,它允许我将引号字符设置为单引号(我需要它来生成 XML 以匹配遗留系统)。 EG var fred = new XmlTextWrit
我需要将 XmlWriter 的 XmlWriterSettings 的 OmitXmlDeclaration 属性设置为 false 以不创建 XML 声明。问题是我通过调用 XPathNaviga
我正在使用不导入缩写的空 xml 元素的遗留应用程序。例如: 坏空: 好空: 我知道实现此目标的解决方案,现在我将介绍: public class XmlTextWriterFull : XmlT
我需要使用 ISO Latin 1 编码,但使用编写器设置下方的代码默认返回 UTF8。我在这里缺少什么? XmlDocument xmlDoc = new XmlDocument(); XmlWri
在 VS2008 中使用 .Net 3.5 SP1 我有一个 XmlDocument 并尝试将其写入文件: using (XmlTextWriter tw = new XmlTextWriter(ou
我需要编写一个 XML 片段以供网络服务使用。任何 xml 声明都会导致 Web 服务拒绝请求。为了支持这一点,我有以下类(class): public class ContentQueryCrite
我是一名优秀的程序员,十分优秀!