[英]Reading XML attribute from a processing instruction line
我在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
这样的XPath,但是它们只是返回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。
如果format是相对固定的,或者您只需要替换某些内容,则string.Replace
(或RegEx.Replace
)可以工作:
instruction.Value = instruction.Value.Replace("lang=\"ae\"", "lang=\"XX\"");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.