我试图从一个XmlNode(也就是一个XmlElement)获取行号,但它不能转换为IXmlLineInfo。所以我尝试使用XPathNavigator,但它也不起作用。
如何获取它的行号?
如何获取它的行号?
使用XPathNavigator和XPathDocument对我来说效果很好,以下是代码片段:
XPathDocument doc = new XPathDocument("XMLFile1.xml");
foreach (XPathNavigator element in doc.CreateNavigator().Select("//*"))
{
Console.WriteLine("Element {0} at line {1}.", element.Name, (IXmlLineInfo)element != null ? ((IXmlLineInfo)element).LineNumber : 0);
}
对于该文件
<?xml version="1.0" encoding="utf-8" ?>
<root>
<foo>3</foo>
<foo>4</foo>
</root>
输出
Element root at line 2.
Element foo at line 3.
Element foo at line 4.
我认为如果你想使用XmlDocument来操作XML文档,你需要扩展DOM实现。如今在.NET世界中,如果你想操作XML文档,我建议使用XDocument/XElement,你可以设置加载选项以确保获得IXmlLineInfo,参见http://msdn.microsoft.com/en-us/library/bb538371%28v=vs.110%29.aspx和http://msdn.microsoft.com/en-us/library/system.xml.linq.loadoptions%28v=vs.110%29.aspx。
.LinePosition
- 运行得非常好。 - HerrimanCoder