【发布时间】:2014-11-16 01:07:39
【问题描述】:
当我在第 i 个文档anything_start_i.xml 中看到有<identifier>value</identifier> 元素时,为什么我会得到hasIdentifier 变量的错误值。
XDocument doc = XDocument.Load(args[0] + "/?verb=GetRecord&metadataPrefix=p3dm&identifier=" + i);
doc.Save("anything_start" + i + ".xml");
bool hasIdentifier = doc.Elements("identifier").Any();
Console.WriteLine(hasIdentifier);
尝试使用后代而不是元素,但又是错误的。
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;
bool work = true;
do{
XDocument doc = XDocument.Load(args[0] + "/?verb=GetRecord&metadataPrefix=p3dm&identifier=" + i);
bool hasIdentifier = doc.Elements("identifier").Any();
if (hasIdentifier) {
doc.Save("anything" + i + ".xml");
i++;
}else{
work = false;
}
} while (work);
【问题讨论】:
-
请添加示例输入/输出。如果您的 XML 很大,请仅包含相关部分。
-
请显示示例 XML(有效但很小,5-7 行)。可能重复许多“为什么
x:会破坏我在 XML 中的搜索”AKA“如何使用命名空间来选择节点”中的一个。 -
确实有默认命名空间。已经有几个关于它的问题 - 即检查stackoverflow.com/questions/13040926/…。 (应该是重复的,但没有投票)。