xmldocument 相关问题

表示XML文档的原始.NET类型。更现代的版本是XDocument。

如何使用c#循环遍历xml文档节点以使用xpath存储值

我正在尝试循环下面的 xml 文档 16 我正在尝试循环下面的 xml 文档 <proposer driverId="1"> <conviction convictionId="1"> <code>16</code> </conviction> <conviction convictionId="2"> <code>10</code> </conviction> </proposer> <driver driverId="2"> <conviction convictionId="3"> <code>22</code> </conviction> </driver> 我的想法是获取所有信念代码,无论是提议者还是驱动程序,并将其存储在字符串列表中,然后通过发送索引,我执行 elementAtDefault 来获取代码 DrivingConvictionCode1 = GetConvictionCode(1, risk), DrivingConvictionCode2 = GetConvictionCode(2, risk), DrivingConvictionCode3 = GetConvictionCode(3, risk), 在 GetConvictionCode 方法中,我将索引值与 XmlDoc 一起传递,并调用 GetConvictions 方法,然后执行 Elementatdefault 以基于索引获取 ConvictionCode private string GetConvictionCode(int convictionSrNo, XmlDocument risk) { var convictions = GetConvictions(risk); return convictions.ElementAtOrDefault(convictionSrNo - 1) == null ? string.Empty : convictions[convictionSrNo - 1]; } private List<string> GetConvictions(XmlDocument risk) { var convictions = new List<string>(); foreach (XmlNode selectNode in risk.SelectNodes("/risk/proposer/conviction")) { convictions.AddRange(new[] {selectNode.SelectSingleNode("/risk/proposer/conviction/code").InnerText}); } foreach (XmlNode selectNode in risk.SelectNodes("/risk/driver/conviction")) { convictions.AddRange(new[] {selectNode.SelectSingleNode("/risk/driver/conviction/code").InnerText}); } return convictions; } 我在这里面临的问题是在循环中下一个信念值正在被旧的值取代,所以如果第一次循环它是 16 下一次它应该是 10 但它来了 16。任何人都可以帮忙或告诉我任何其他方式 我期望的输出是 DrivingConvictionCode1 = GetConvictionCode(1, risk) > 16, DrivingConvictionCode2 = GetConvictionCode(2, risk) > 10, DrivingConvictionCode3 = GetConvictionCode(3, risk) > 22, 您应该使用 InnerText 而不是 .SelectSingleNode("<path>").InnerText 来获取值。 foreach (XmlNode selectNode in risk.SelectNodes("/risk/proposer/conviction")) { convictions.AddRange(new[] { selectNode.InnerText }); } foreach (XmlNode selectNode in risk.SelectNodes("/risk/driver/conviction")) { convictions.AddRange(new[] { selectNode.InnerText }); }

回答 1 投票 0

如何将 XML 反序列化为 C# 对象而忽略 xmlns?

给定以下 XML,我如何将它们反序列化为同一个 C# 对象?版本 1.1 本质上向后兼容 1.0,所以我并不真正关心 xmlns 值,但 C# 不这么认为...

回答 1 投票 0

UnauthorizedAccessException:访问路径被拒绝

当尝试加载 xml 文档进行解析时,我不断收到以下错误: System.Private.Xml.dll 中发生“System.UnauthorizedAccessException”类型的异常,但...

回答 1 投票 0

如何让XMLDocument不在自闭合标签上放置空格?

我有一个格式良好、没有任何空格的 XML。一定是这样的。 当我将其加载到 XMLDocument 进行签名时,自闭合标签会获得额外的空白,并且 变成: ...

回答 4 投票 0

'xi'是设置新XmlDocumentFragment的InnerXml时未声明的前缀

我正在尝试向现有 xml 文件添加新节点。该文件定义了 xi 命名空间: 我正在尝试向现有 xml 文件添加新节点。该文件定义了 xi 命名空间: <Module xmlns:xi="http://www.w3.org/2001/XInclude" ... 并且包含节点: <xi:include href="somefile.xml" /> 这加载得很好,我可以在现有节点上进行操作,但是如果我尝试像这样添加新节点: XmlDocumentFragment frag = doc.CreateDocumentFragment(); frag.InnerXml = "<SomeNode SomeAttribute=\"\">" + " <xi:include href=\"SomeFile.xml\" />" + "</SomeNode>"; 我收到“'xi'是未声明的前缀”的 XmlException 我认为片段本身无法识别名称空间是不高兴的,但我没有看到任何直观的方法来解决这个问题。 当我写这个问题时,我有一个可行的想法,并将其发布,以防它对其他人有帮助。我决定在将片段添加到文档后添加有问题的 xml: XmlDocumentFragment frag = doc.CreateDocumentFragment(); frag.InnerXml = "<SomeNode SomeAttribute=\"\">" + "</SomeNode>"; XmlNode newNode = parentNode.AppendChild(frag); newNode.InnerXml = "<xi:include href=\"SomeFile.xml\" />"; 如果有人有更干净的方法来做到这一点。我很想听听它是什么。 在 <xi:include href="somefile.xml" /> 中,xi 是命名空间前缀。 如果使用命名空间前缀,则必须声明。您必须在使用命名空间前缀 xi 的元素之上或之上添加其声明: xmlns:xi="http://www.w3.org/2001/XInclude" 如果您通过以某种方式组装片段来暂时设法避开错误消息,请意识到最终结果才是重要的:如果使用了命名空间但未声明,您仍然会遇到问题。 我想在这里发布一个详细的例子。 下面的代码展示了如何使用 C# 将文本 sinppet 附加到 OneNote 桌面。 你可能知道,OneNote 中的内容存储为 xml,每个节点的前缀为 one。 因此名称空间xmlns:one设置在输入部分的第一行。 xmlns:one=""http://schemas.microsoft.com/office/onenote/2013/onenote"" using System; using System.Xml; using System.Xml.Linq; using Append2OneNote; using Microsoft.Office.Interop.OneNote; class Program { static void Main() { Microsoft.Office.Interop.OneNote.Application onenoteApp = new Microsoft.Office.Interop.OneNote.Application(); string pageId = "{3ACAE6C6-53C5-0C4F-060D-3007A1428E63}{1}{E19561840189956234832620129833010512773022001}"; onenoteApp.GetPageContent(pageId, out var CurrentPageXml); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(CurrentPageXml); XmlNode root = xmlDoc.DocumentElement; var LastOutline = root.LastChild; var LastOEChildren = LastOutline.LastChild; var LastOE = LastOEChildren.LastChild; var pageContent = "Your text content1"; string newXML = $@" <one:OE alignment=""left"" quickStyleIndex=""1"" selected=""partial"" xmlns:one=""http://schemas.microsoft.com/office/onenote/2013/onenote""> <one:T selected=""all""><![CDATA[{pageContent}]]></one:T> </one:OE>"; XmlDocumentFragment xfrag = xmlDoc.CreateDocumentFragment(); xfrag.InnerXml = newXML; LastOEChildren.AppendChild(xfrag); onenoteApp.UpdatePageContent(xmlDoc.InnerXml); } }

回答 3 投票 0

在生产环境(64 GB RAM)中生成非常大的 XML 文档时出现 OutOfMemory 错误 - 在具有 16 GB RAM 的计算机上进行开发时工作正常

我有一个 Web 应用程序,经典 ASP.NET,在具有 64 GB RAM 和 SQL Server 2017 Standard 的 Windwes Server SBE 2016 上运行。 该应用程序是在 VS 2022 最新版本中构建的。 我需要生成一个非常大的 XML,以便...

回答 1 投票 0

XML 在没有 xpath 的情况下读取嵌套节点

我有以下xml。 DocumentEntity=“借款人”|DataType=“表”|Value=“ ...

回答 1 投票 0

将字符串加载到 XmlDocument 后保留空行

我有这些相当大的字符串,其中包含多个换行符” “而且,在某些情况下,我什至可能会有一系列换行符” ...”。这会导致空行,

回答 1 投票 0

使用 XPath 解析 XML 文档

假设我有以下 xml(一个简单的示例) 一个 两个 ...

回答 8 投票 0

XPath 不适用于在 XML 中进行选择

我有一个 XML 文档,但我一生都无法使用 XPath 获取数据。我尝试了所有能找到的样本,但没有成功。我正在尝试提取电子邮件地址。有什么想法吗? XML: &...

回答 2 投票 0

C# 十六进制值 0x12,是无效字符

我正在加载很多xml文档,其中一些返回错误,例如“十六进制值0x12,是无效字符”,并且有不同的字符。如何去除它们?

回答 7 投票 0

如何获取带有标头的 XML (<?xml version="1.0"...)?

考虑以下简单代码,它创建一个 XML 文档并显示它。 XmlDocument xml = new XmlDocument(); XmlElement root = xml.CreateElement("root"); xml.AppendChild(根); Xml评论

回答 4 投票 0

有没有办法使用 ASP.NET API 控制器返回 XML 文件内容?

我正在尝试模拟我无权访问的服务器进行测试。服务器返回我正在测试的客户端读取并加载到 XmlDocument 类中的 XML 文件的内容。 好像...

回答 1 投票 0

当文件编码为 Unicode 时,C# XmlDocument.Load(string) 失败

我想使用 XmlDocument.Load(String) 方法从 xml 文件加载 XMLDocument,但是当我尝试使用它时出现此错误: System.Xml.XmlException:“.”,十六进制值 0x00,无效

回答 1 投票 0

如何从 StringBuilder C# 创建具有多个根的 XML 文件

我是一名机械师,必须开发管理 xml 文件的工具。 我有一个问题,需要你的帮助。 我必须管理的 xml 文件之一有多个根。不要问为什么,我的提供商不会

回答 1 投票 0

Blazor c# - 如何 XmlDocument.load() 本地文件

Blazor(网络组装)新手,所以放轻松:) 我希望能够通过 InputFile 从本地磁盘(大小为 100mb 的区域)选择一个 xml 文件并将其加载到 XmlDocument 中,这样我就可以

回答 2 投票 0

在 PowerShell XmlDocument.CreateElement 中转义冒号

我试图在 CreateElement 方法中转义冒号。例如,我想更改以下内容: $node = $xmldoc.CreateElement("测试:示例") 给我一个看起来像 t 的节点...

回答 1 投票 0

Xml 循环引用

我正在尝试使用下面的类结构生成以下 XML。 ...

回答 2 投票 0

从 XmlNode 中删除 CDATA 标签

我有一个代表以下 xml 的 XmlNode,例如: XmlNode xml.innerText = 我有一个XmlNode代表以下xml例如: XmlNode xml.innerText = <book> <name><![CDATA[Harry Potter]]</name> <author><![CDATA[J.K. Rolling]]</author> </book> 我想更改此节点,使其包含以下内容: XmlNode xml.innerText = <book> <name>Harry Potter</name> <author>J.K. Rolling</author> </book> 任何想法?谢谢! 好吧,如果这正是你所说的,那就很简单了: xml.innerText = xml.innerText.Replace("![CDATA[","").Replace("]]",""); xmlDoc.Save();// xmlDoc is your xml document 我建议您阅读整个 xml 并重写它。您可以像这样读取没有 cdata 的值 foreach (var child in doc.Root.Elements()) { string name = child.Name; string value = child.Value }

回答 2 投票 0

如何将文件夹中的所有 Xml 文件加载到 XmlDocument

使用下面的代码,我可以在 XmlDocument xWorkload 中加载一个 Xml 文件。 XmlDocument xWorkload = new XmlDocument(); private void button1_Click(对象发送者,RoutedEventArgs e) ...

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.