8

我有一个有效的 XML 文件正在被以下 .NET C# windows 服务读取。有问题的标签(u1_000)绝对在元素中:

<book id="u1_000" category="xyz"> 

GetElementById() 是否有某种原因找不到带有标签的 Book 元素?- 谢谢

XmlDocument doc = new XmlDocument();
doc.Load("C:\\j.xml");
XmlElement ee = doc.GetElementById("U1_000");

<book id="U1_000" category="web"> 
4

3 回答 3

6

如果不出意外,也许使用 xpath 作为备份:

string id = "u1_000";
string query = string.Format("//*[@id='{0}']", id); // or "//book[@id='{0}']"
XmlElement el = (XmlElement)doc.SelectSingleNode(query);
于 2010-01-05T05:31:10.553 回答
4

您需要一个 DTD 来确定元素上的哪个属性将构成唯一 ID。在 XML 中,它不会自动假定id属性应该被视为唯一的元素 ID。

一般来说,“unDTDed” XML getElementById 不是很有用。在大多数情况下,正在处理的 XML 文件的结构是可以理解的(例如,根元素被称为books包含一系列book元素),因此典型的访问看起来像这样:-

 XmlElement book = (XmlElement)doc.DocumentElement.SelectSingleNode("book[@ID='U1_000']");

如果您真的不知道元素的 XML 结构和/或标签名称,那么 Marcs 回答中描述的蛮力搜索将起作用。

于 2010-01-05T09:16:26.417 回答
3

查看MSDN 文档以了解此方法。在下面的示例中,您可以看到他们如何使用 DOCTYPE 建立 ID。这可能会为您解决问题。

于 2010-01-05T00:20:02.493 回答