[英]how to get “xpath” from xml node in C#
xml范例:
<Details name="Tee">
<Surname id="Kat"/>
<MiddleName id="TeeKat"/>
</Details>
给定属性@id:
我想获得以下路径:
Details.Surname.@id=Kat
Details.Surname.@id=TeeKat
我到目前为止的代码:
private static object GetXmlPath(XmlNode node) {
if (node.NodeType == XmlNodeType.Attribute) {
return String.Format("{0}@{1}", GetXmlPath(((XmlAttribute)node).OwnerElement), node.Name);
}
return node.ParentNode == null ? "" : String.Format("{0}{1}.", GetXmlPath(node.ParentNode), node.Name);
}
您的代码似乎在很大程度上完成了您想要的事情,添加了值:
private static object GetXmlPath(XmlNode node) {
if (node.NodeType == XmlNodeType.Attribute) {
return String.Format("{0}@{1}={2}", GetXmlPath(((XmlAttribute)node).OwnerElement), node.Name, node.Value);
}
return node.ParentNode == null ? "" : String.Format("{0}{1}.", GetXmlPath(node.ParentNode), node.Name);
}
我强烈建议您实际使用/ Details / Surname / @ id = Kat以获得更自然的可读性,并且因为。 在XmlNames中是合法的
即:
private static object GetXmlPath(XmlNode node) {
if (node.NodeType == XmlNodeType.Attribute) {
return String.Format("{0}@{1}={2}", GetXmlPath(((XmlAttribute)node).OwnerElement), node.Name, node.Value);
}
return node.ParentNode == null ? "/" : String.Format("{0}{1}/", GetXmlPath(node.ParentNode), node.Name);
}
返回/ Details / MiddleName / @ id = TeeKat等
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.