Tag: xml

将xml文档拆分为块

我有一个大型的xml文档,需要一次处理100条记录 它是在用c#编写的Windows服务中完成的。 结构如下: 2008-10-13 050758023 sddsf dsfd sdf sdfsdd sdfdsfdf dffddf 2008-10-13 050758023 sddsf dsfd sdf sdfsdd sdfdsfdf dffddf ….. ….. 在一个案卷中可能会有成千上万的订单。 我需要将其切成100个元素块 但是,100个订单中的每一个仍然需要用父“docket”节点包装并具有相同的命名空间等 这可能吗?

.net中的流式XML序列化

我正在尝试使用XmlSerializer序列化一个非常大的IEnumerable ,而不会将所有对象保留在内存中。 IEnumerable实际上是懒惰的.. 我正在寻找一种流媒体解决方案: 使用标准序列化从IEnumerable序列化到底层流中的对象( 我不想在这里手工处理XML! ) 丢弃内存数据并移至下一个 我正在尝试使用此代码: using (var writer = new StreamWriter(filePath)) { var xmlSerializer = new XmlSerializer(typeof(MyObject)); foreach (var myObject in myObjectsIEnumerable) { xmlSerializer.Serialize(writer, myObject); } } 但我得到多个XML标头,我无法指定根标签所以我的XML无效。 任何的想法? 谢谢

api检查项目文件中的项目变量和引用路径

我正在开发一个带有x no的.net application (VS2010) 。 解决方案和变量号。 这些解决方案中的项目。 我需要检查项目属性(特定于一定数量的项目)是否是同质的,并在构建期间检查/validation参考路径。 有没有这样做的API ? 如果没有,我如何建立一个?

在反序列化期间,只会忽略未知元素

当我使用XmlTextReader反序列化XML文档时,将忽略没有相应类的文本元素。 注意:这不是关于XML缺少的元素,而是需要存在的元素,而是存在于XML文本中,而不是代码中具有等效属性。 我本来希望得到一个例外,因为如果运行时数据中缺少相应的元素并且我稍后将其序列化,则生成的XML文档将与原始XML文档不同。 所以忽略它是不安全的(在我的实际案例中,我只是忘记定义给定文档包含的99个以上类中的一个,而我最初没有注意到)。 这是正常的,如果是,为什么? 如果元素无法序列化,我可以以某种方式请求我想获得exception吗? 在下面的示例-XML中,我故意拼写错误的“MyComandElement”来说明核心问题: MyRootElement.cs: public class CommandElement {}; public class MyRootElement { public CommandElement MyCommandElement {get; set;} } 反序列化: XmlSerializer xmlSerializer = new XmlSerializer(typeof(MyRootElement)); XmlTextReader xmlReader = new XmlTextReader(@”pgtest.xml”); MyRootElement mbs2 = (MyRootElement)xmlSerializer.Deserialize(xmlReader); xmlReader.Close();

.NET中的XML数据管理

我在.NET中学习Xml数据处理。 我有以下XML格式。 book 1 author 1 10.90 1985 book 2 author 2 20.90 1995 我需要学习添加/编辑/删除新书到XML文件。 能否请您指导我们探索这些function的所有课程。 我发现许多类如XmlDocument XmlTextWriter等。一些网站建议也使用LINQ。 我很困惑哪个去了。 有什么好的材料我可以参考了解这一点。

XDocument使用具有命名空间的Root元素读取XML文件

我在使用具有多个名称空间的根节点解析XML文件时遇到了一些麻烦。 我想得到一个包含’UserControlLibrary’的类型字符串的节点’对象’列表: XML文件: 我试过了: XDocument webXMLResource = XDocument.Load(@”../../../../Web.xml”); IEnumerable values = webXMLResource.Descendants(“object”); 没有返回任何结果。

如何使用XmlSerializer插入xml字符串

我已经定义了以下类: public class Root { public string Name; public string XmlString; } 并创建了一个对象: Root t = new Root { Name = “Test”, XmlString = “bar” }; 当我使用XmlSerializer类来序列化这个对象时,它将返回xml: Test <Foo>bar</Foo> 如何使它不编码我的XmlString内容,以便我可以获得序列化的xml bar 谢谢,伊恩

使用MemoryStream写出XML

我注意到有两种不同的方法可以将数据写入XML文件(为简洁起见,省略了error handling)。 第一种方法是构建XML文档,然后将XML保存到文件中: using (XmlWriter writer = XmlWriter.Create(fileName)) { writer.WriteStartDocument(true); writer.WriteStartElement(“parentelement”); writer.WriteEndElement(); writer.WriteEndDocument(); } 第二种方法是创建MemoryStream,然后将MemoryStream保存到文件中: XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = true; MemoryStream ms = new MemoryStream(); using (XmlWriter writer = XmlWriter.Create(ms, settings)) { writer.WriteStartDocument(true); writer.WriteStartElement(“parentelement”); writer.WriteEndElement(); writer.WriteEndDocument(); } using (FileStream fs = File.Open(fileName, FileMode.Create, FileAccess.Write)) { ms.WriteTo(fs); ms.Dispose(); } 我猜测使用MemoryStream的逻辑是确保在尝试保存文件之前可以构建XML文件。 在将条目添加到XML文件中时,MemoryStream方法是否会提供Atomic写入事件和/或防止写入问题? 任何人都可以解释这是否真的是必要的,或者只是一种过度的方法来为我的项目添加不必要的代码行?

如何加载内联DTD以用于XDocument?

我有一个问题,关于如何将文档类型定义包含到XML文件中,或者从WP7中加载到XDocument中的XML文件中。 我有与此类似的DTD文件: <!DOCTYPE root [ ]> 我需要将这个DTD添加到XML中,以便捕获特殊字符,例如é 。 我使用以下方法从Web获取XML以在Linq中使用: private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e) { string documentUrl = “http://www.example.com”; WebClient client = new WebClient(); client.OpenReadCompleted += new OpenReadCompletedEventHandler(client_OpenReadCompleted); client.OpenReadAsync(new Uri(documentUrl, UriKind.Absolute)); } void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e) { Stream str = e.Result; XDocument data = XDocument.Load(str); // Saving the XML to the file system […]

如何在C#中以编程方式创建XSD文件?

我有一个xml文件(我使用XmlDocument在c#中创建),现在我必须创建xsd文件,它也在C#中以编程方式对应…我怎么能这样做? 我可以使用相同的类来创建xml文件吗? 或者我应该使用其他任何(xsd相关)类?