Tag: linq to xml

如何删除XElement的CDATA标记?

我有一些代码接收一些XML,并且可能存在CDATA标记元素。 将一个标志传递给方法,该方法指出CDATA标签是否应该存在,如果标志为false,那么CDATA标签应该被删除(如果存在),如何在不解析query.Value的情况下执行此操作? private static void CDataTagUtility(XmlDocument catalog, XElement newData, bool addCdataTag) { XElement query = newData.Element(“Query”).Element(“CommandText”); if (addCdataTag) { XmlCDataSection encapsulatedQuery = catalog.CreateCDataSection(query.Value); try { query.SetValue(encapsulatedQuery.OuterXml); } catch (ArgumentException exc) { /*Thrown due to CDATA tag already present – ignore*/ } } else //check for cdata tag – remove if present { //How do I […]

如何在查询XDocument时使用类作为数据模型?

我有一个Xml文档: Smith Robert Smith Sam Smith Jeff Smith Sarah ……以及一些支持类如下: [XmlRoot] public class Family { [XmlElement] public List Person; } public class Person { [XmlAttribute(“member”)] public MemberType Member { get; set; } [XmlAttribute(“id”)] public int Id { get; set; } [XmlElement] public string Surname { get; set; } [XmlElement] public string Forename { get; set; […]

Linq to XML:xml标记中的冒号问题

以下是检索内容标记中的值的代码: var returnVerse = from item in xmlTreeVerse.Descendants(“rss”).Elements(“channel”).Elements(“item”) select new VerseModel { Verse = item.Element(“content”).Value, Url = “” }; 这是XML文件: text text text Text 我无法查询“content:encode”,因为查询“:”运算符无效。 请帮忙。

在将此XElement添加到匿名对象之前,如何检查此XElement是否为空?

我正在从XML文件填充匿名对象。 到现在为止, commentary.Elements(“Commentator”) 总是有一个值,所以我从来没有检查过null。 我不得不删除它,现在它在尝试读取该行时失败了。 我正在查看代码,但我不知道要改变什么,因为它被选择为匿名对象的属性。 var genericOfflineFactsheet = new { Commentary = (from commentary in doc.Elements(“Commentary”) select new { CommentaryPage = (string)commentary.Attribute(“page”), BusinessName = (string)commentary.Attribute(“businessName”), Commentator = (from commentator in commentary.Elements(“Commentator”) select new CommentatorPanel // ASP.NET UserControl { CommentatorName = (string)commentator.Attribute(“name”), CommentatorTitle = (string)commentator.Attribute(“title”), CommentatorCompany = (string)commentator.Attribute(“company”) }).FirstOrDefault() }).FirstOrDefault() 问题是,我无法完全删除该行,因为有时候commentary.Elements(“Commentator”) 确实有一个值。 我确定此问题已经处理过,但我看不清楚该做什么。 有任何想法吗?

XDocument防止无效的charachters

我正在使用XDocument来保存一种数据库。 这个数据库由注册的聊天机器人组成,我只是有许多“bot”节点,其中包含“username”,“owner”等属性。 然而,偶尔会有一些聪明的家伙决定制作一个具有非常奇怪特征的机器人作为其中一个属性。 这使得XDocument类系列在读取该节点时抛出exception,这是一个非常大的问题,因为数据库无法完全保存,因为它一旦到达无效字符就停止写入文件。 我的问题是 – 有一个类似XSomething.IsValidString(string s)的简单方法,所以我可以省略有问题的数据吗? 我的数据库不是官方数据库,只是个人使用,因此我不必包含不良数据。 我正在使用的一些代码(变量file是XDocument): 要保存: file.Save(Path.Combine(Environment.CurrentDirectory, “bots.xml”)); 要加载(在检查File.Exists()等之后): file = XDocument.Load(Path.Combine(Environment.CurrentDirectory, “bots.xml”)); 要添加到数据库(变量都是字符串): file.Root.Add(new XElement(“bot”, new XAttribute(“username”, botusername), new XAttribute(“type”, type), new XAttribute(“botversion”, botversion), new XAttribute(“bdsversion”, bdsversion), new XAttribute(“owner”, owner), new XAttribute(“trigger”, trigger))); 请原谅我缺乏适当的XML技术,我刚刚开始。 我问的是,如果有一个XSomething.IsValidString(string s)方法,而不是我的XML有多糟糕。 好的,我刚刚得到exception,这里是确切的消息和堆栈跟踪。 System.ArgumentException: ”, hexadecimal value 0x07, is an invalid character. at System.Xml.XmlUtf8RawTextWriter.InvalidXmlChar(Int32 ch, […]

如何使用LINQ-to-XML从XML中排除NULL块?

考虑这个XML文件。 请注意,第一个教程有一个Author子元素,第二个教程没有: The Tallest WPF Tutorial – Creating A Custom Panel Control 2/18/2008 2nd WPF Tutorial – Creating A Custom Panel Control 2/18/2008 如何使用LINQ-to-XML加载存在的数据? 下面的代码在进入没有作者的Tutorial部分时会爆炸。 我无法弄清楚如何编写where语句来排除缺少作者的块,或者如何使代码优雅地跳过丢失的数据。 我试过这个: where tutorial.Element(“Title”) != null 但上面没有效果….这是问题代码: XDocument xmlDoc = XDocument.Load(“C:\\xml\\2.xml”); var tutorials = from tutorial in xmlDoc.Descendants(“Tutorial”) select new { Author = tutorial.Element(“Author”).Value, Title = tutorial.Element(“Title”).Value, Date = tutorial.Element(“Date”).Value, […]

具有XDocument命名空间问题的Linq-to-XML

我有这个XML文档: 01 ABN Amro Bank 02 ASN Bank 这不起作用: var banks = doc.Descendants(“issuer”).Select(x => new Bank(Convert.ToInt32(x.Element(“issuerid”).Value), x.Element(“issuername”).Value)).ToList(); 但是当我手动删除目录响应xml命名空间xmlns=”https://www.sisow.nl/Sisow/REST”它可以工作! 命名空间url是404 。 那么为什么xdoc如果它是404就不会忽略命名空间呢? 这也行不通: var banks = doc.Elements().Where(e => e.Name.LocalName == “issuer” ).Select(… 主要问题是:如何修改代码以使其忽略404名称空间?

如何将数据库数据转换为XML文件

问: 我是XML的初学者。我有一些数据来自我的数据库,我想将这些数据转换为XML文件,稍后将其导入特定程序。执行此操作所需的步骤是什么?请举例说明和文章如果可能的话? 需要这样的东西,但动态。

LINQ to XML递归查询

我有一个像文档树一样的xml站点地图,它看起来像这样: FileName Admin FileName FileName FileName FileName *请注意,这不是我的实际xml文件。 实际的xml文件太大而无法显示。 基本上你需要消除的是,有可能存在“X”数量的文件夹彼此嵌套,并且在这些文件夹中的某些点上,可能存在“X”数量的文件以及子文件夹。 此外, 某些文件夹具有安全性,该文件夹由文件夹中的所有内容 (文件,子文件夹,子文件夹中的文件等)inheritance。 我试图提出一个LINQ to XML查询,以获得基于该文件GUID的给定文件的安全性,它适用于level-1和level-2文件,但是当我尝试在一个文件上运行查询时文件是3个文件夹深,它失败,我得到一个nullreferenceexception。 这是我正在使用的查询: XDocument sitemap = XDocument.Load(HttpContext.Current.Server.MapPath(“/…/sitemap.xml”)); XElement fileFromMap = sitemap.Descendants(“File”).Where( file => file.Attribute(“GUID”).Value == guid).First(); XElement currentFile = new XElement(“File”, fileFromMap.Value, fileFromMap.Ancestors(“Folder”).SelectMany( folder => { XElement security = folder.Element(“Security”); return (security != null ? security.Elements(“Role”) : null); })); *和信用到期的信用,我在这里得到了这个查询 nullreferenceexception发生在currentFile变量的声明中,我不知道为什么。 […]

在.NET中过滤XML文档中元素的最简单方法

假设我有以下文档 set1 80 EVersion Val R 0 0 8 set3 50 GVersion Bin R 0 0 8 我只想要ID和值元素 – set1 80 set3 50 我如何使用XDocument和LINQ选择这些?