Tag: linq to xml

XDocument删除节点

我有一个XML文件 #text_filter,#text_filter,#text_filter,#text_filter,#text_filter,#text_filter recinfoArea Id NazovProjektu 我想删除beforeInit和afterInit元素。 我试过了 xml.Elements().Where(e=>e.Name == “beforeInit” || e.Name == “afterInit”).Remove(); 但没有运气。

使用XDocument写入XML,但知道在哪里写

希望你能帮到我一点。 我正在尝试写一个XML文件,但我正在努力编写这个方法,并写入XML文件。 这是手动编写的XML文件(使用Notepad ++等): 这部分应用程序的目的是使用GUI编写它。 在应用程序中,用户选择XML文件的名称。 然后将其保存在临时文件夹中,直到有人询问用户要保存的位置为止。 输入所需的文件名并单击“创建”后,将运行名为“createAndLoadXML”的方法。 顾名思义,它会创建并加载XML文件(以填充表单上的listview控件)。 代码如下所示。 private void createAndLoadXML() { // Method to create XML file based on name entered by user string tempPath = Path.GetTempPath(); string configFileName = fileNameTextBox.Text; string configPath = tempPath + configFileName + “.xml”; // Create XDocument XDocument document = new XDocument( new XDeclaration(“1.0”, “utf8”, “yes”), new […]

Linq-to-XML查询,以根据其他条件选择特定的子元素

我当前的LINQ查询和示例XML如下所示。 我想要做的是从email-addresses元素中选择主电子邮件地址到User.Email属性。 如果为true,则email-address元素下的type元素设置为primary。 电子邮件地址下可能有多个元素,但只有一个元素将标记为主要元素。 这里最简单的方法是什么? 当前Linq查询(User.Email当前为空): var users = from response in xdoc.Descendants(“response”) where response.Element(“id”) != null select new User { Id = (string)response.Element(“id”), Name = (string)response.Element(“full-name”), Email = (string)response.Element(“email-addresses”), JobTitle = (string)response.Element(“job-title”), NetworkId = (string)response.Element(“network-id”), Type = (string)response.Element(“type”) }; 示例XML: primary alice@domain.com Account Manager user Eastern Time (US & Canada) Domain Alice 79629 2 […]

在C#中,有没有办法使用短前缀而不是每个节点的完整命名空间生成XDocument?

我只是想让我的XML更整洁,更小。 我知道在C#中我可以这样做: XNamespace ds = “http://schemas.microsoft.com/ado/2007/08/dataservices”; new XElement(ds + “MyDumbElementName”, “SomethingStupid”); 并得到一个XML simliar: SomethingStupid 而不是像这样的东西: SomethingStupid 显然,第二个版本更漂亮,更易于阅读和紧凑。 有没有办法生成一个XDocument等效的紧凑版本,而不调用Parse(“…”)? 您可能决定承担风险并回答“否”,在这种情况下,我认为公平的事情是等待其他人回答,如果没有人给出合适的答案,我会接受您的“否”,否则如果有人确实提供了答案,我会标记“否”。 我希望你们看起来也很公平。 编辑:也许我应该更具体一点,并说我希望能够使用多个名称空间,而不仅仅是一个。

如何更改此XML字符串以便XDocument.Parse读取它?

在以下代码中,我将对象序列化为XML 字符串 。 但是当我尝试使用XDocument.Parse将此XML字符串读入XDocument时,它会给我这个错误 : 根级别的数据无效。 XML是: 1 Jim Jones 23434 更新:这是hex: ![alt text][1] Mod edit – 禁用超链接:指向恶意软件的链接 我该如何处理这个XML,以便它在没有错误的情况下读入XDocument? using System; using System.Collections.Generic; using System.Xml.Serialization; using System.IO; using System.Xml; using System.Text; using System.Xml.Linq; namespace TestSerialize2342 { class Program { static void Main(string[] args) { List customers = Customer.GetCustomers(); Console.WriteLine(“— Serializing ——————“); foreach (var customer in […]

XElement和List

我有一个具有以下属性的类: public class Author { public string FirstName { get; set; } public string LastName { get; set; } } 接下来,我有一个像这样的作者列表: List authors = new List (); authors.add( new Author { FirstName = “Steven”, LastName = “King” }); authors.add( new Author { FirstName = “Homer”, LastName = “” }); 现在,我正在尝试使用Linq to XML来生成表示我的作者列表的XML。 new XElement(“Authors”, new […]

解析XDocument而不必继续指定默认命名空间

我有一些XML数据(类似于下面的示例),我想读取代码中的值。 为什么我被迫指定默认名称空间来访问每个元素? 我原本期望默认命名空间用于所有元素。 有没有更合理的方法来实现我的目标? 示例XML: 00000173 2009-10-28T16:50:01 BX4f+RmNCVCsT5g OK 用于读取我之后的xml元素的代码: XDocument xDoc = XDocument.Load( FileInPath ); XNamespace ns = “http://www.secretsonline.gov.uk/secrets”; XElement MessageCheck = xDoc.Element(ns+ “MessageHeader”).Element(ns+”MessageCheck”); XElement MessageBody = xDoc.Element(“Receipts”);

Linq To Xml Null检查属性

我想用linq解析这个,我很好奇其他人用什么方法处理特殊问题。 我目前的工作方式是: var books = from book in booksXml.Descendants(“book”) let Name = book.Attribute(“name”) ?? new XAttribute(“name”, string.Empty) let Price = book.Attribute(“price”) ?? new XAttribute(“price”, 0) let Special = book.Attribute(“special”) ?? new XAttribute(“special”, string.Empty) select new { Name = Name.Value, Price = Convert.ToInt32(Price.Value), Special = Special.Value }; 我想知道是否有更好的方法来解决这个问题。 谢谢, 贾里德

我的XDeclaration在哪里?

由于某种原因,以下代码生成不包含声明的XML: XDocument xDocument = new XDocument(new XDeclaration(“1.0”, “utf-8”, “yes”), new XElement(“project”, new XAttribute(“number”, project.ProjectNumber), new XElement(“store”, new XAttribute(“number”, project.StoreNumber) ), // User Element new XElement(“user”, new XAttribute(“owner-id”, project.OwnerID ?? 0), new XElement(“email”, new XCData(project.OwnerEmail ?? “”)), new XElement(“project-name”, new XCData(project.ProjectName ?? “”)) ), // Nested Project Element new XElement(“nested-project”, new XAttribute(“version”, new Version(1, 0)), new […]

LINQ to XML和DataGridView

嗨,我第一次尝试使用DataGridView和LINQ。 这是我正在尝试做的事情:我想使用它(虽然它没有DataGridView)来读取和显示XML文件的内容(这个位在下面是工作代码)但是我想要添加一个表单或DataGridView中的行按钮,它获取三个文本框的内容,并填充新行的三列的内容。 新行将附加到现有数据。 接下来,我想添加一个删除按钮来删除当前选定的行。 最后,我想要一个保存按钮,将DataGridView的内容导出回XML文件,覆盖/更新现有的XML文件。 所以我坚持添加额外的数据! 但由于我目前没有关于删除或保存的线索,我想我会一气呵成! 所以这是我必须阅读xml文件的代码: XDocument xmlDoc = XDocument.Load(@”queues.xml”); var q = from c in xmlDoc.Root.Descendants(“Queue”) select new { QueueNumber = c.Element(“Number”).Value, QueueName = c.Element(“Name”).Value, QueuePCC = c.Element(“QueueTag”).Value }; dataGridView1.DataSource = q.ToList(); XML文档: 001 mytest xyz 002 Adi2 ABCD 好的,我现在已将代码更改为: XDocument xmlDoc = XDocument.Load(@”queues.xml”); var q = from c in xmlDoc.Root.Descendants(“Queue”) select […]