簡體   English   中英

如何從XPath語句中找到字符串位置(索引)?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM