c# - 使用 XDocument 解析 XML

标签 c# xml linq-to-xml

我可以使用 XDocument 从以下 xml 中解析“my_cool_id”吗?

<?xml version="1.0" encoding="UTF-8"?>
<xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve">
  <fields>
    <field name="field_name_1">
      <value>12345</value>
    </field>
    <field name="my_cool_id">
      <value>12345</value>
    </field>
    <field name="field_name_2">
      <value>12345</value>
    </field>
    <field name="field_name_3">
      <value>12345</value>
    </field>
  </fields>
</xfdf>

最佳答案

我怀疑您被命名空间难住了。试试这个:

XDocument doc = XDocument.Load("test.xml");
XNamespace ns = "http://ns.adobe.com/xfdf/";

foreach (XElement element in doc.Root
                                .Element(ns + "fields")
                                .Elements(ns + "field"))
{
    Console.WriteLine("Name: {0}; Value: {1}",
                      (string) element.Attribute("name"),
                      (string) element.Element(ns + "value"));
}

或者只查找一个特定元素:

XDocument doc = XDocument.Load("test.xml");
XNamespace ns = "http://ns.adobe.com/xfdf/";
var field = doc.Descendants(ns + "field")
               .Where(x => (string) x.Attribute("name") == "my_cool_id")
               .FirstOrDefault();

if (field != null)
{
    string value = (string) field.Element("value");
    // Use value here
}

关于c# - 使用 XDocument 解析 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7798852/

相关文章:

javascript - 在 javascript 或 c# 中从 Html 源查找重定向 URL

java - 在 XQuery 中使用多个参数?

c# - 通过 linq to xml 选择属性值

html - 如何查看http ://in xml formate with xslt

xml - 在 Haskell 中解析 XML

c# - LINQ to XML 等效于 XPath

.net - 如何从 XDocument 轻松获取 TextReader?

c# - 无法让 Fiddler 使用 localhost 不同端口捕获来自 MVC 的 HttpClient Web api 调用

c# - 如何在循环中调用正在运行的 Ranorex 测试?

c# - 后台运行方法和UI Thread WPF