XDocument Descendants,使用c#中的元素值

时间:2014-11-15 07:22:36

标签: c# xml

我有问题,我无法得到......而且不知道它有什么问题?

代码:

static void Main(string[] args)
 {
  XDocument doc = XDocument.Load(args[0] + "/?verb=GetRecord&metadataPrefix=p3dm&identifier=" + 1);
  doc.Save("doc.xml");
  var node = doc.Descendants("identifier");
  foreach (var n in node)
   {
    doc.Save("file_" + n.Value + ".xml");
   }
 }

doc.xml如下所示:

<?xml version="1.0" encoding="utf-8"?>
    <OAI-PMH xmlns="..." xmlns:xsi="..." xsi:schemaLocation="...">
      <responseDate>...</responseDate>
      <request verb="GetRecord" identifier="1"</request>
      <GetRecord>
        <record>
          <header>
            <identifier>1</identifier>
            <datestamp>...</datestamp>
          </header>
          <metadata>
            <P3DM xmlns="..." xsi:schemaLocation="...">
              <MODELINFOID>1</MODELINFOID>
              <TITLE>Roth</TITLE>
  ....

正如我们在doc.xml中看到的那样,元素值为1,并使用Descendants和foreach ...我想保存相同的文档,但使用标记值来命名我的输出文件。我究竟做错了什么。此代码仅用于测试。

1 个答案:

答案 0 :(得分:0)

您的XML具有默认命名空间。您可以使用XNamespace加元素的本地名称来寻址命名空间中的元素:

......
//assume that the default namespace declared as <OAI-PMH xmlns="dummy.uri" ....>
XNamespace d = "dummy.uri";
var node = doc.Descendants(d+"identifier");
......