gpt4 book ai didi

c# 无法使用 xpath 读取元素属性

转载 作者:太空宇宙 更新时间:2023-11-03 19:33:41 26 4
gpt4 key购买 nike

此代码无法读取特定属性 - 更具体地说是名称属性。相反,它读取节点元素的文本并对它们进行连接 - 结果:1F20 被添加到列表中

var reader = new StringReader(xml);
var xmlreader = new XmlTextReader(reader);
xmlreader.WhitespaceHandling = WhitespaceHandling.None;
var doc = new XPathDocument(xmlreader);
var nav = doc.CreateNavigator();
XPathExpression expr = nav.Compile("/Area/Lights/Light[@Name]");
XPathNodeIterator iterator = nav.Select(expr);

var list = new List<string>();
while (iterator.MoveNext())
{
XPathNavigator nav2 = iterator.Current.Clone();
list.Add(nav2.Value);
}

我也试过:XPathExpression expr = nav.Compile("//Light[@Name]");

返回空白

这是我正在尝试读取的 xml:

<Light Index="1" SetChannel="72" GetChannel="60" Name="y1 d1">
<Nodes>1F</Nodes>
<Nodes>20</Nodes>
</Light>

我做错了什么 - 第一次尝试 xpath...

最佳答案

这是完整的 XML 吗?在这里使用你的代码片段是可行的

XPathExpression expr = nav.Compile("Light/@Name");

只是为了添加 XPathExpression expr = nav.Compile("/Area/Lights/Light[@Name]"); 的用法是一个过滤器,您要求的 Light 节点具有一个名为 Name 的属性,或者您可以执行类似 @Name = 'bob' 的操作,其中您要求一个 Name 属性等于 Bob 的 Light 节点

关于c# 无法使用 xpath 读取元素属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3353206/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com