gpt4 book ai didi

.net - 奇怪的行为 XmlDocument.LoadXML 和 GetElementByID,如何用引号声明字符串

转载 作者:行者123 更新时间:2023-12-04 07:09:20 24 4
gpt4 key购买 nike

这是一些c#代码

string webPageStr =  @"<html><body><div id=""content"">good content</div><div id=""badcontent"">bad content</div></body></html>";
XmlDocument webPage = new XmlDocument();
webPage.LoadXml(webPageStr);

XmlElement divElement = webPage.GetElementById("content");

和 divElement 等于 null,我不知道为什么

我也试过像这样声明 webPageStr
string webPage =  @"<html><body><div id=&quot;content&quot;>good content</div><div id=&quot;badcontent&quot;>bad content</div></body></html>";

但 XmlDocument 抛出异常 System.Xml.XmlException: "&"bad token

这段代码有什么问题?

最佳答案

如果你想使用 GetElementById,你需要包含一个 DOCTYPE 声明。方法。这是因为该函数不知道 ID 对于给定的 XML 意味着什么。在您的情况下,您使用的是 XHTML,因此您需要指定当您想通过 id 查找元素时,这意味着查找具有名为“id”的属性的节点:

string webPageStr = @"<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Transitional//EN"" ""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd""><html><body><div id=""content"">good content</div><div id=""badcontent"">bad content</div></body></html>";
XmlDocument webPage = new XmlDocument();
webPage.LoadXml(webPageStr);
XmlElement divElement = webPage.GetElementById("content");

第一种方法意味着您在运行代码时需要通过 Web 访问 DOCTYPE 声明 ( http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd )

另一种方法是使用 XPATH 表达式:
string webPageStr = @"<html><body><div id=""content"">good content</div><div id=""badcontent"">bad content</div></body></html>";
XmlDocument webPage = new XmlDocument();
webPage.LoadXml(webPageStr);
XmlNode divElement = webPage.SelectSingleNode("//div[@id=\"content\"]");

关于.net - 奇怪的行为 XmlDocument.LoadXML 和 GetElementByID,如何用引号声明字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/621772/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com