需要从具有不同标识符的多个链接加载和保存多个XML文件。 例如:
来自:
http:/...identifier=1
http:/...identifier=2
...
http:/...identifier=m
另存为:
file_1_1.xml
file_1_2.xml
file_2_1.xml
...
file_n_m.xml
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>
....
代码如下:
static void Main(string[] args)
{
var i = 1;
do
{
XDocument doc = XDocument.Load(args[0] + "/?verb=GetRecord&metadataPrefix=p3dm&identifier=" + i);
var node = doc.Descendants("identifier");
foreach (var n in node)
{
doc.Save("file_" + i + "_" + n.Value + ".xml");
}
} while (i < 5);
}
答案 0 :(得分:0)
尝试使用您所说的内容...如果您只想下载并保存xml文件,那么您无需使用XDocument
对象查询它们吗?
只需使用WebClient
对象下载它们 - 将代码修改为以下内容:
System.Net.WebClient webClient = new WebClient();
var i=1;
do
{
string url = args[0] + "/?verb=GetRecord&metadataPrefix=p3dm&identifier=" + i);
string destFilePath = @"C:\file" + i +".xml";
webClient.DownloadFile(url,destFilePath);
} while (i < 5);
答案 1 :(得分:0)
好的 - 所以现在明白你想要“处理”xml文件中的某些内容而不是保存它们......
再看一下代码,我怀疑它是xml命名空间导致你遇到麻烦。
如果您将var node = doc.Descendants("identifier");
替换为:
var node = doc.Descendants()
.Where(d=>d.Name.LocalName=="identifier");
我相信你会更好......