This question已接近,但它正在寻找序数位置。我正在寻找给定源字符串中的实际索引位置。
更好的解释:
我有以下字符串
"<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语句可用于查找第3个节点:
a/b[.='tsr']
但是,我需要它返回一个23的字符串索引而不是3的序数位置。
可能?不可能?
答案 0 :(得分:0)
这会给你你想要的吗?
selectedNodenode = xmlSearchText.SelectSingleNode("a/b[.='tsr']");
selectedNode.ParentNode.OuterXml.IndexOf(selectedNode.OuterXml)
不会从root用户那里给你索引,但它会从父节点给你索引。
答案 1 :(得分:0)
使用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);
如果你真的需要字符串中的字符索引,可以通过计算字符串中的换行符并添加列来推断出它。