如何在c#中生成有效的XML ?
当前回答
我尝试过的最好的方法是LINQ to XSD(大多数开发人员都不知道这一点)。您给它一个XSD Schema,它就会在后台为您生成一个完美映射的、完整的强类型对象模型(基于LINQ到XML),这非常容易操作——它实时更新和验证您的对象模型和XML。虽然它仍然是“预览”,我没有遇到任何错误与它。
如果你的XSD模式是这样的:
<xs:element name="RootElement">
<xs:complexType>
<xs:sequence>
<xs:element name="Element1" type="xs:string" />
<xs:element name="Element2" type="xs:string" />
</xs:sequence>
<xs:attribute name="Attribute1" type="xs:integer" use="optional" />
<xs:attribute name="Attribute2" type="xs:boolean" use="required" />
</xs:complexType>
</xs:element>
然后你可以像这样简单地构建XML:
RootElement rootElement = new RootElement;
rootElement.Element1 = "Element1";
rootElement.Element2 = "Element2";
rootElement.Attribute1 = 5;
rootElement.Attribute2 = true;
或者像这样简单地从文件中加载XML:
RootElement rootElement = RootElement.Load(filePath);
或者这样保存:
rootElement.Save(string);
rootElement.Save(textWriter);
rootElement.Save(xmlWriter);
rootElement。un类型化也产生XElement形式的元素(从LINQ到XML)。
其他回答
new XElement("Foo",
from s in nameValuePairList
select
new XElement("Bar",
new XAttribute("SomeAttr", "SomeAttrValue"),
new XElement("Name", s.Name),
new XElement("Value", s.Value)
)
);
对于简单的情况,我还建议查看XmlOutput——用于构建Xml的流畅接口。
XmlOutput非常适合用于创建具有可读和可维护代码的简单Xml,同时生成有效的Xml。最初的帖子有一些很好的例子。
XmlWriter是编写良好XML的最快方法。XDocument, XMLDocument和其他一些也很好,但没有为编写XML进行优化。如果希望尽可能快地编写XML,那么肯定应该使用XmlWriter。
在过去,我创建了我的XML模式,然后使用工具生成c#类,这些类将序列化到该模式。XML模式定义工具就是一个例子
http://msdn.microsoft.com/en-us/library/x6c1kb0s (VS.71) . aspx
我尝试过的最好的方法是LINQ to XSD(大多数开发人员都不知道这一点)。您给它一个XSD Schema,它就会在后台为您生成一个完美映射的、完整的强类型对象模型(基于LINQ到XML),这非常容易操作——它实时更新和验证您的对象模型和XML。虽然它仍然是“预览”,我没有遇到任何错误与它。
如果你的XSD模式是这样的:
<xs:element name="RootElement">
<xs:complexType>
<xs:sequence>
<xs:element name="Element1" type="xs:string" />
<xs:element name="Element2" type="xs:string" />
</xs:sequence>
<xs:attribute name="Attribute1" type="xs:integer" use="optional" />
<xs:attribute name="Attribute2" type="xs:boolean" use="required" />
</xs:complexType>
</xs:element>
然后你可以像这样简单地构建XML:
RootElement rootElement = new RootElement;
rootElement.Element1 = "Element1";
rootElement.Element2 = "Element2";
rootElement.Attribute1 = 5;
rootElement.Attribute2 = true;
或者像这样简单地从文件中加载XML:
RootElement rootElement = RootElement.Load(filePath);
或者这样保存:
rootElement.Save(string);
rootElement.Save(textWriter);
rootElement.Save(xmlWriter);
rootElement。un类型化也产生XElement形式的元素(从LINQ到XML)。
推荐文章
- 实体框架核心:在上一个操作完成之前,在此上下文中开始的第二个操作
- 如何为构造函数定制Visual Studio的私有字段生成快捷方式?
- 如何使用JSON确保字符串是有效的JSON。网
- AppSettings从.config文件中获取值
- 通过HttpClient向REST API发布一个空体
- 如何检查IEnumerable是否为空或空?
- 自动化invokerrequired代码模式
- 在c#代码中设置WPF文本框的背景颜色
- 在c#中,什么是单子?
- c#和Java中的泛型有什么不同?和模板在c++ ?
- c#线程安全快速(est)计数器
- 如何将此foreach代码转换为Parallel.ForEach?
- 如何分裂()一个分隔字符串到一个列表<字符串>
- 如何转换列表<字符串>列表<int>?
- c#对象列表,我如何得到一个属性的和