正在从处理指令行读取XML属性
本文关键字:读取 XML 属性 指令 处理 | 更新日期: 2023-09-27 18:20:25
我在XML文档中有以下行
<?ish ishref="GUID-XXXXXXXXXXXXXXXXXXXX" version="1" lang="ae" srclng="en"?>
并且想要读取(和修改)lang属性。我尝试过以下几种:
newXMLDoc.Load(XMLfile);
instruction = newXMLDoc.SelectSingleNode("/processing-instruction('ish')")
as XmlProcessingInstruction;
instruction
返回了一个有效的对象,其innerText等于"it’s"行,但我不知道如何访问属性(尝试了各种方法,但都返回null)
如何访问instruction
的属性(或者是否有其他更好的访问方法)?
我尝试过类似"/ish@lang"和instruction.Attributes
,但它们只返回NULL。
我更喜欢非LINQ解决方案,我使用的是.NET 4.5
处理指令只包含文本-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'"");