繁体   English   中英

如何使用C#获取XML节点的下一个文本?

[英]How to get the next text of an XML node, with C#?

我有以下XML。 鉴于classname,我需要获得相应的colorcode。 我怎样才能在C#中实现这一目标? 否则说,我必须到达一个特定的节点,给出它以前节点的文本。 非常感谢你

<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<?xml-stylesheet type='text/xsl' href='template.xslt'?>
<skin name="GHV--bordeaux">
  <color>
    <classname>.depth1</classname>
    <colorcode>#413686</colorcode>
  </color>
  <color>
    <classname>.depth2</classname>
    <colorcode>#8176c6</colorcode>
  </color>...

将xml加载到XmlDocument中,然后执行:

document.SelectSingleNode("/skin/color[classname='.depth1']/colorcode").InnerText

将您的xml加载到文档中。

var color = document.CreateNavigator().Evaluate("string(/skin/color/classname[. = '.depth']/following-sibling::colorcode[1])") as string;

这将返回您的一个颜色代码或空字符串。
正如@Dolphin指出的那样,使用follow-sibling意味着我假设与原始示例中的元素排序相同。

我的Linq版本似乎稍微冗长:

var classname = ".depth1";
var colorcode = "";

XElement doc = XElement.Parse(xml);

var code = from color in doc.Descendants("color")
    where classname == (string) color.Element("classname")
    select color.Element("colorcode");

if (code.Count() != 0) {
    colorcode = code.First().Value;
}

Xpath很有用...... // skin / color [classname ='。devp1'] / colorcode将返回#413686。 将xml加载到XmlDocument中。 然后使用.SelectSingleNode方法并使用Xpath,根据需要更改类名。

XmlDocument.SelectSingleNode是您的解决方案。 作为一个例子提供了一个很好的例子。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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