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);
}
答案 0 :(得分:0)
您的代码似乎主要是为了做您想要的,添加值:
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);
}
return / Details / MiddleName / @ id = TeeKat等