使用 XDocument 类读取 xml 数据

发布于 2024-12-21 06:02:40 字数 722 浏览 0 评论 0原文

我有一个 xml 文件 (test.xml)

<root loc-ver="1.0">
  <data name="String1" xml:space="preserve">
        <value loc="root_data_value_2">Description number1</value>
    </data>
  <data name="String2" xml:space="preserve">
        <value loc="root_data_value_3">Description number 2</value>
    </data>
</root>

现在,如果

我指定名称 =“String1”,我应该得到的值为“Description number1”

我指定名称 =“String2”,我应该得到的值为 Description number2

我正在尝试这种方法,但没有结果

 XDocument doc = XDocument.Load(@"D:\test.xml");
 string search = "String10";

 var lv1s = from lv1 in doc.Descendants("data")
            select lv1.Name;

I have an xml file say (test.xml)

<root loc-ver="1.0">
  <data name="String1" xml:space="preserve">
        <value loc="root_data_value_2">Description number1</value>
    </data>
  <data name="String2" xml:space="preserve">
        <value loc="root_data_value_3">Description number 2</value>
    </data>
</root>

Now, if

I specify the name = "String1", I should get the value as "Description number1"

I specify the name = "String2", I should get the value as Description number2

I am trying with the approach, by no result

 XDocument doc = XDocument.Load(@"D:\test.xml");
 string search = "String10";

 var lv1s = from lv1 in doc.Descendants("data")
            select lv1.Name;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

森林散布 2024-12-28 06:02:40

听起来像您想要的:

string name = "String1"; // Or whatever
var query = from data in doc.Descendants("data")
            where (string) data.Attribute("name") == name
            select (string) data.Element("value");

string description = query.First(); // Or FirstOrDefault etc

您应该考虑如果没有一个结果,您想要发生什么。这是一个错误状态吗(如果是这样,请使用 Single()),是否应该使用所有结果(如果是这样,只需迭代 query),是否应该使用第一个结果result 如果可用,则忽略它(如果有,请使用 FirstOrDefault() 并检查结果是否为 null),如果您使用第一个结果,则如果没有任何结果,则会出现错误(如果是这样,请使用First())。

Sounds like you want:

string name = "String1"; // Or whatever
var query = from data in doc.Descendants("data")
            where (string) data.Attribute("name") == name
            select (string) data.Element("value");

string description = query.First(); // Or FirstOrDefault etc

You should consider what you want to happen if there isn't exactly one result. Is that an error state (if so, use Single()), should you use all the results (if so, just iterate over query), should you use the first result if it's available, and ignore it otherwise (if so, use FirstOrDefault() and check if the result is null), should you use the first result, and it's an error if there aren't any (if so, use First()).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文