gpt4 book ai didi

c# - 从处理指令行读取 XML 属性

转载 作者:行者123 更新时间:2023-12-01 19:17:36 26 4
gpt4 key购买 nike

我在 XML 文档中有以下行

<?ish ishref="GUID-XXXXXXXXXXXXXXXXXXXX" version="1" lang="ae" srclng="en"?>

并且想要读取(并修改)lang 属性。我尝试过以下方法:

newXMLDoc.Load(XMLfile);
instruction = newXMLDoc.SelectSingleNode("/processing-instruction('ish')")
as XmlProcessingInstruction;

指令返回了一个有效的对象,其innerText等于“it's”行,但我不知道如何访问属性(尝试了各种方法,但都返回null)

如何访问指令的属性(或者是否有其他方法可以更好地进行访问)?

我尝试过像“/ish@lang”和instruction.Attributes这样的XPath,但它们只是返回NULL。

我更喜欢非 LINQ 解决方案,我使用的是 .NET 4.5

最佳答案

Processing instruction仅包含文本 - XML 规范不对内容施加任何限制,也不为其提供任何结构。因此,要获取内部文本,您只需使用 Value 属性:

var newXMLDoc = new XmlDocument();
newXMLDoc.LoadXml("<?ish t='v' u='v'?><R></R>");
var instruction = newXMLDoc.SelectSingleNode("/processing-instruction('ish')")
as XmlProcessingInstruction;
Console.WriteLine(instruction.Value); // t='v' u='v'

结果值的解析取决于 PI 值的严格程度。如果您知道值没有空格,则对空格和对 '=' 进行简单的 String.Split 可能就足够了,否则需要一些更复杂的方法,也许 RegEx 需要待写。

如果格式相对固定或者您只需要替换某些内容 - string.Replace (或 RegEx.Replace)可以工作:

  instruction.Value = instruction.Value.Replace("lang=\"ae\"", "lang=\"XX\"");

关于c# - 从处理指令行读取 XML 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33515563/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com