[英]How could I find the string position (index) from an XPath statement?
這個問題很接近,但它正在尋找序數位置。 我正在尋找給定源字符串中的實際索引位置。
更好的解釋:
我有以下字符串
"<a>
<b>zyx</b>
<b>wvu</b>
<b>tsr</b>
<b>qpo</b>
</a>"
我正在將該字符串加載到.NET XmlDocument對象中。 回車費和線路費可能是此處的一個因素。
Dim xmlSearchText As New XmlDocument()
xmlSearchText.LoadXml(SearchTextBox.Text)
Dim selectedNode As XmlNode = xmlSearchText.SelectSingleNode(txtSearch.Text)
以下XPath語句可用於查找第三個節點:
a/b[.='tsr']
但是,我需要它返回字符串索引23而不是順序位置3。
可能? 不可能?
這會給您您想要的嗎?
selectedNodenode = xmlSearchText.SelectSingleNode("a/b[.='tsr']");
selectedNode.ParentNode.OuterXml.IndexOf(selectedNode.OuterXml)
不會為您提供從根開始的索引,但是會為您提供從父節點開始的索引。
使用XPathDocument代替XmlDocument將使您可以使用行號和列位置訪問IXmlLineInfo接口。
XPathDocument document = new XPathDocument("file.xml");
XPathNavigator navigator = document.CreateNavigator();
XPathNavigator node = navigator.Select("a/b[.='tsr']");
IXmlLineInfo info = ((IXmlLineInfo)node);
Console.WriteLine("Found at ({0},{1})",info.LineNumber,info.LinePosition);
如果確實需要字符串中的字符索引,則可以通過在字符串中計算換行符並添加列來推斷出它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.