如何获取xml标签关闭的行号?
How to get the Line number where the xml tag is closed?
我正在尝试获取 XML 标签的起始行号和结束行号(例如 - XML 代码下方的员工),我能够获取标签的起始行号XML 文件但不是关闭特定标签的行号。
有什么办法可以得到标签关闭的行号吗
我的XML代码文件。
<Employee>
<Employee_Summary>
<RID>1</RID>
<Employee_ID> 78769</Employee_ID>
<Name> Mohan Singh</Name>
</Employee_Summary>
</Employee>
<Employee>
<Employee_Summary>
<RID>2</RID>
<Employee_ID> 78770</Employee_ID>
<Name> Ramesh</Name>
</Employee_Summary>
</Employee>
C#代码
foreach (var employee in employees)
{
// code to get employee tag start Line number
var elemntStartLine = ((IXmlLineInfo)employee).LineNumber;
// here is want to get tag end Line number from xml file.
}
此处employees
的类型为IEnumerable<XElement>
在反序列化数据上,您与文件结构没有任何关系。您必须以 ascii 格式读取文件并尝试循环执行一些自定义检查的唯一机会(保留开始标记的行号,并查找它们的结束标记...)。
但是由于XML不是必须的,甚至是分行的,所以这是一种非常不可靠的方法。
您可能会问自己,您首先需要这些信息做什么?也许您找到了您的用例的另一种表述方式。
我找到了一个解决方案来获取员工 xml 标签关闭的行号。
foreach (var employee in employees)
{
// code to get employee tag start Line number
var elemntStartLine = ((IXmlLineInfo)employee).LineNumber;
// here i get tag end Line number from xml file.
var elemntEndLine =GetXelementEndLineNo(employee);
}
public int GetXelementEndLineNo(XElement xElement)
{
int endLineNo = 0;
xElement.RemoveAll();
xElement.Add(string.Empty);
using (XmlReader xmlReader = xElement.CreateReader())
{
var lineInfo = ((IXmlLineInfo)xmlReader);
while (xmlReader.Read())
{
if (xmlReader.NodeType == XmlNodeType.EndElement && xmlReader.LocalName.ToUpper() == "EMPLOYEE")
{
endLineNo = lineInfo.LineNumber;
}
}
}
return endLineNo;
}
我正在尝试获取 XML 标签的起始行号和结束行号(例如 - XML 代码下方的员工),我能够获取标签的起始行号XML 文件但不是关闭特定标签的行号。
有什么办法可以得到标签关闭的行号吗
我的XML代码文件。
<Employee>
<Employee_Summary>
<RID>1</RID>
<Employee_ID> 78769</Employee_ID>
<Name> Mohan Singh</Name>
</Employee_Summary>
</Employee>
<Employee>
<Employee_Summary>
<RID>2</RID>
<Employee_ID> 78770</Employee_ID>
<Name> Ramesh</Name>
</Employee_Summary>
</Employee>
C#代码
foreach (var employee in employees)
{
// code to get employee tag start Line number
var elemntStartLine = ((IXmlLineInfo)employee).LineNumber;
// here is want to get tag end Line number from xml file.
}
此处employees
的类型为IEnumerable<XElement>
在反序列化数据上,您与文件结构没有任何关系。您必须以 ascii 格式读取文件并尝试循环执行一些自定义检查的唯一机会(保留开始标记的行号,并查找它们的结束标记...)。
但是由于XML不是必须的,甚至是分行的,所以这是一种非常不可靠的方法。 您可能会问自己,您首先需要这些信息做什么?也许您找到了您的用例的另一种表述方式。
我找到了一个解决方案来获取员工 xml 标签关闭的行号。
foreach (var employee in employees)
{
// code to get employee tag start Line number
var elemntStartLine = ((IXmlLineInfo)employee).LineNumber;
// here i get tag end Line number from xml file.
var elemntEndLine =GetXelementEndLineNo(employee);
}
public int GetXelementEndLineNo(XElement xElement)
{
int endLineNo = 0;
xElement.RemoveAll();
xElement.Add(string.Empty);
using (XmlReader xmlReader = xElement.CreateReader())
{
var lineInfo = ((IXmlLineInfo)xmlReader);
while (xmlReader.Read())
{
if (xmlReader.NodeType == XmlNodeType.EndElement && xmlReader.LocalName.ToUpper() == "EMPLOYEE")
{
endLineNo = lineInfo.LineNumber;
}
}
}
return endLineNo;
}