gpt4 book ai didi

c# - 使用命名空间查询 XML 的问题

转载 作者:行者123 更新时间:2023-12-04 16:57:43 28 4
gpt4 key购买 nike

我正在尝试使用返回 XML 响应的 Rest 服务。我已成功发出 get 请求,我的问题是处理响应。响应包含一个 namespace ,它似乎弄乱了我的 linq 查询。我已经尝试了几乎所有我能想到的用户名总是空的。任何帮助将不胜感激,并可能挽救我的理智。

<?xml version="1.0" encoding="UTF-8"?>
<tsResponse xmlns="http://tableausoftware.com/api" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://tableausoftware.com/api http://tableausoftware.com/api/ts-api-2.0.xsd">
<users>
<user id="c9274ce9-0daa-4aad-9bd2-3b1d6d402119" name="_DevITTemplate" role="Unlicensed" publish="false" contentAdmin="false" lastLogin="" externalAuthUserId=""/>
string usersList =
request.DownloadString("http://bshagena-sandbox/api/2.0/sites/b4126fe9-d7ee-4083-88f9- a5eea1f40416/users/");
request.Dispose();

XDocument xd;
XElement users;
XNamespace ns = "http://tableausoftware.com/api";

xd = XDocument.Parse(usersList);
users = xd.Root.Elements().First();

var userNames = from a in users.Descendants(ns +"users")
select (string)a.Attribute("name").Value;

最佳答案

这是您的 user包含属性 name 的元素,而不是 names包装元素。相应地调整您的 xpath:(您使用 XNamespace 很好)

var userNames = from a in users.Descendants(ns + "user")
select a.Attribute("name").Value;

次要 - Attribute.Valuealready a string - 不需要投它:)

关于c# - 使用命名空间查询 XML 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27369350/

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