草庐IT

XDocument

全部标签

c# - 确定 XDocument 中的元素

我有一个要解析的XML文档。这是它的样子(这里只是格式,没有数据):我计划做的是遍历xml文档并对每个元素进行操作。例如,如果元素是我会调用代码来作用于该特定元素。如果元素是,我会调用代码来对此采取行动。varxdoc=XDocument.Load("Items.xml");foreach(XElementelementinxdoc.Descendants("objectdata")){//ifelementis...//ifelementis...//ifelementis...//etc...}我想也许使用switch/case来确定元素的类型会起作用,但我不知道如何确定元素的类型

c# - 无法使用 XDocument 查询 XML 文档并获得所需的结果

我正在尝试使用BingmapAPI,它返回一个XML文档。文档(简化但保持结构)是200Minorfalse在这种情况下,只有1个交通问题,但可能有很多。我正在尝试提取道路是否封闭以及严重程度XML存储在xd对象(XDocuement类型)以下工作正常(没有错误但返回所有元素)varallNodes=(fromxinxd.Descendants()selectx).ToList();但是如果我添加一个元素名称然后它返回一个包含0个项目的列表varallNodes=(fromxinxd.Descendants("Resources")selectx).ToList();我认为上面的代码在

c# - XDocument.Load 是否将所有数据加载到内存中?

我必须读取大型xml文件的根节点的所有第一级节点,如下所示:我的代码如下:varxml=XDocument.Load(filename);varfirstNode=xml?.Root?.Descendants()?.FirstOrDefault();varelements=firstNode?.Elements();我只需要获取根的第一个子节点及其所有一级后代。这段代码工作正常,但问题是:这样读安全吗?我猜它不会将所有数据加载到内存中-只有xml文件的结构?如我所见,调试时内存没有增加。只有当我真正尝试查看xml变量中的内容时,它才会爆炸。 最佳答案

c# - 从加载的 xml 中释放内存?

例如,如果您加载一个xml并出于任何原因使用它:XDocumentdoc=XDocument.Load("my.xml");现在您已经使用完它并想释放它使用的任何内存,最初我认为将它设置为null可以完成这项工作,但事实并非如此,那么释放已用内存的正确方法是什么?可能吗? 最佳答案 您正在做正确的事情。让GC担心它何时收集,因为它会在有压力时收集。 关于c#-从加载的xml中释放内存?,我们在StackOverflow上找到一个类似的问题: https://s

c# - 通过 .NET/C# 将 byte[] 转换为 XML

我将XML作为字节数组(byte[])存储在数据库中。现在我需要从我成功完成的数据库中获取字节数组并将其传递给XDocument,如下所示:publicDictionaryReadFromByte(byte[]UserData,stringtoplevelnode,stringfirstattribute,stringsecondattribute){XDocumentdoc=XDocument.Load(UserData);Dictionarydictionary=doc.Descendants(toplevelnode).ToDictionary(x=>x.Attribute(fi

c# - 设置中的 XDocument

我试图在VS2010的设置面板中手动输入XDocument但没有成功。类型是System.Xml.Linq.XDocument我得到的信息是:Cannotbeconvertedtoaninstanceoftype'System.Xml.Linq.XDocument'有人知道解决这个问题的方法吗?ST 最佳答案 您不能创建XDocument直接设置,因为XDocument类不符合criteria设置用于确定是否可以使用类型:ApplicationsettingscanbestoredasanydatatypethatisXMLseri

c# - 将 XElement 合并到 XDocument 中并解析 namespace

鉴于以下XDocument,初始化为变量xDoc:我有一个嵌入在XML文件中的模板(我们称之为body.xml):我想把它作为的child.问题是如果通过XElement.Parse(body.xml)添加它,它保留了namespace,即使我认为应该删除namespace(没有必要复制自身-已经在父级上声明)。如果我不指定命名空间,它会改为放置一个空的命名空间,因此它变为.有没有办法正确合并XElement进入XDocument?我想在xDoc.Root.Element("ReportSection").AddFirst(XElement)之后得到以下输出:

c# - 使用 XDocument 的子元素计数

我正在使用NLua将Lua嵌入到我的C#应用程序中。我希望能够直接在Lua中读取XML,但是由于我不能在Lua中执行Linq,而且我还没有找到任何NLua兼容的库来读取XML,我决定自己做,使用林克。我想创建一个函数来计算XML文件中元素的数量。这是文件:我想数一数有多少个“C”元素。这是我的C#函数:publicintCountElement(stringelementName){vareltNames=fromeltinhandler.Elements(elementName)selectelt;returneltNames.Count();}如果我用参数“C”调用它,它不会返回我

c# - 通过 for 循环将一个 XML 文件插入另一个文件 (XDocument)

这是我以前没有做过的事情,所以我可能一开始就做错了,如果我错了,请告诉我。我使用XDocument创建了一个根XML文件:publicvoidSaveReceipt(Listarticles){XDocumentreceipt=newXDocument(newXDeclaration("1.0","utf-8",null),newXElement("FiscalRecipet"));...}然后使用for循环尝试遍历articles列表,这样我就可以构建一个收据XML文件。for(inti=0;iarticles.Count-1)){if(articles[i].Id==article

c# - 将 HTML 5 文档类型添加到 XDocument (.NET)

像这样为System.Xml.Linq.XDocument创建文档类型时:doc.AddFirst(newXDocumentType("html",null,null,null));生成的保存的XML文件开头为:注意右尖括号前的额外空间。我怎样才能防止这个空间出现?如果可能的话,我想要一个干净的方式:) 最佳答案 如果您写入XmlTextWriter,则不会获得空间:XDocumentdoc=newXDocument();doc.AddFirst(newXDocumentType("html",null,null,null));do