gpt4 book ai didi

c# - System.Xml.XPath.XPathException 有一个无效的标记

转载 作者:太空宇宙 更新时间:2023-11-03 21:41:50 25 4
gpt4 key购买 nike

当尝试解析 XML 时,我得到一个引用无效标记的异常

来自 url 的 html 响应:

<?xml version="1.0" encoding="UTF-8" ?>
<uclassify xmlns="http://api.uclassify.com/1/server/ResponseSchema" version="1.01">
<status success="true" statusCode="2000"/>
<readCalls>
<classify id="Classify">
<classification textCoverage="0.849057">
<class className="negative" p="0.567908"/>
<class className="positive" p="0.432092"/>
</classification>
</classify>
</readCalls>
</uclassify>

代码:

HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
var stream = myHttpWebResponse.GetResponseStream();
var reader = new StreamReader(stream);
string html = reader.ReadToEnd();
XmlDocument doc = new XmlDocument();
doc.LoadXml(html);
string negative = doc.SelectSingleNode("/uclassify/readCalls/classify/classification/class[1]@p").ToString();
string positive = doc.SelectSingleNode("/uclassify/readCalls/classify/classification/class[2]@p").ToString();

我真的不明白为什么它不起作用。任何帮助,将不胜感激。

最佳答案

您的 xml 中有一个 xpath 中需要的默认 namespace ..

XmlNamespaceManager oManager = new XmlNamespaceManager(new NameTable());
oManager.AddNamespace("ns", "http://api.uclassify.com/1/server/ResponseSchema");
doc.SelectSingleNode("/ns:uclassify/ns:readCalls/ns:classify/ns:classification/ns:class[1]/@p",oManager);

虽然我会使用 LINQ2XML

XDocument doc=XDocument.Load(stream);
var pList=doc.Descendants()
.Elements(x=>x.Name.LocalName=="class")
.Select(a=>
new
{
className=a.Attribute("className").Value,
p=a.Attribute("p").Value
});

您现在可以遍历 pList

foreach(var p in pList)
{
p.className;
p.p;
}

关于c# - System.Xml.XPath.XPathException 有一个无效的标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18982695/

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