繁体   English   中英

如何从C#中的xml节点获取“ xpath”

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM