Tag: linq to xml

如何防止System.Xml.XmlException:给定编码中的字符无效

我有一个用C#编写的Windows桌面应用程序,它循环存储在磁盘上并由第三方程序创建的一堆XML文件。 大多数所有文件都由此语句后面的LINQ代码成功加载和处理: XDocument xmlDoc = XDocument.Load(inFileName); List docList = (from d in xmlDoc.Descendants(“DOCUMENT”) select new DocMetaData { File = d.Element(“FILE”).SafeGetAttributeValue(“filename”) , Folder = d.Element(“FOLDER”).SafeGetAttributeValue(“name”) , ItemID = d.Elements(“INDEX”) .Where(i => (string)i.Attribute(“name”) == “Item ID(idmId)”) .Select(i => (string)i.Attribute(“value”)) .FirstOrDefault() , Comment = d.Elements(“INDEX”) .Where(i => (string)i.Attribute(“name”) == “Comment(idmComment)”) .Select(i => (string)i.Attribute(“value”)) .FirstOrDefault() , Title = d.Elements(“INDEX”) […]

XmlTextReader与XDocument

我能够在.NET中解析XML。 现在我可以选择至少XmlTextReader和XDocument 。 这两个(或框架中包含的任何其他XML解析器)之间是否有任何比较? 也许这可以帮助我做出决定而不必深入尝试它们。 与易于使用相比,XML文件预计相当小,速度和内存使用是一个小问题。 🙂 (我将从C#和/或IronPython中使用它们。) 谢谢!

使用XDocument解析XML

我可以使用XDocument从以下xml解析“my_cool_id”吗? 12345 12345 12345 12345

Linq to XML – 更新/更改XML文档的节点

我有两个问题: 1.我已经开始使用Linq来处理XML,我想知道是否可以通过Linq更改XML文档。 我的意思是,有什么喜欢的 XDocument xmlDoc = XDocument.Load(“sample.xml”); update item in xmlDoc.Descendants(“item”) where (int)item .Attribute(“id”) == id … 2.我已经知道如何通过简单地使用创建和添加新的XMLElement xmlDoc.Element(“items”).Add(new XElement(……); 但是如何删除单个条目? XML示例数据:

XDocument.Validate总是成功的

我有一个模式文件,它没有定义任何目标命名空间,即它的定义如下所示: 相应的XML如下所示: 使用例如Altova XMLSpy或Oxygen XML Editor对架构validation此XML失败。 但是,我在C#(.NET 4.0)中的validation不会失败。 XML作为XDocument对象处理。 如果我已经正确理解,那么如果在模式中没有找到名称空间,则XDocument.Validate()执行不严格的validation。 因此validation不会失败。 但是,我如何为XDocument实现“严格”validation? 这就是我尝试validationXML的方法: public static void ValidateXml(XDocument xml, string xsdFilename) { XmlReaderSettings settings = new XmlReaderSettings(); XmlSchemaSet schemaSet = new XmlSchemaSet(); schemaSet.Add(string.empty, xsdFilename); settings.ValidationType = ValidationType.Schema; settings.ValidationFlags |= XmlSchemaValidationFlags.ReportValidationWarnings; settings.ValidationEventHandler += new ValidationEventHandler(ValidationCallback); xml.Validate(schemaSet, ValidationCallback); } private static void ValidationCallback(object sender, ValidationEventArgs args) { if […]