我正在使用 System.Xml.XmlTextReader 前向阅读器。调试的时候,我可以随时查看属性LineNumber
和LinePosition
,查看游标的行号和列号。有什么办法可以在文档中看到光标的任何类型的“路径”?
例如,在以下 HTML 文档中,如果光标位于 * 处,则路径将类似于 html/body/p
。我会发现这样的事情真的很有帮助。
<html>
<head>
</head>
<body>
<p>*</p>
</body>
</html>
编辑:我也希望能够类似地检查
XmlWriter
。 最佳答案
据我所知,使用普通的 XmlTextReader 无法做到这一点;但是,您可以通过新的 Path
属性扩展它以提供此功能:
public class XmlTextReaderWithPath : XmlTextReader
{
private readonly Stack<string> _path = new Stack<string>();
public string Path
{
get { return String.Join("/", _path.Reverse()); }
}
public XmlTextReaderWithPath(TextReader input)
: base(input)
{
}
// TODO: Implement the other constuctors as needed
public override bool Read()
{
if (base.Read())
{
switch (NodeType)
{
case XmlNodeType.Element:
_path.Push(LocalName);
break;
case XmlNodeType.EndElement:
_path.Pop();
break;
default:
// TODO: Handle other types of nodes, if needed
break;
}
return true;
}
return false;
}
}