gpt4 book ai didi

c# - 路径中的 XML 非法字符

转载 作者:IT王子 更新时间:2023-10-29 03:42:55 26 4
gpt4 key购买 nike

我正在查询基于 soap 的服务并希望分析返回的 XML,但是当我尝试将 XML 加载到 XDoc 中以查询数据时。我收到“路径中的非法字符”错误消息?这(下方)是从服务返回的 XML。我只是想获取比赛列表并将它们放入我设置的列表中。尽管 XML 确实加载到 XML 文档中,但必须正确格式化吗?

任何有关执行此操作和避免错误的最佳方法的建议将不胜感激。

<?xml version="1.0" ?> 
- <gsmrs version="2.0" sport="soccer" lang="en" last_generated="2010-08-27 20:40:05">
- <method method_id="3" name="get_competitions">
<parameter name="area_id" value="1" />
<parameter name="authorized" value="yes" />
<parameter name="lang" value="en" />
</method>
<competition competition_id="11" name="2. Bundesliga" soccertype="default" teamtype="default" display_order="20" type="club" area_id="80" last_updated="2010-08-27 19:53:14" area_name="Germany" countrycode="DEU" />
</gsmrs>

这是我的代码,我需要能够查询 XDoc 中的数据:

string theXml = myGSM.get_competitions("", "", 1, "en", "yes");
XmlDocument myDoc = new XmlDocument();
MyDoc.LoadXml(theXml);
XDocument xDoc = XDocument.Load(myDoc.InnerXml);

最佳答案

你没有显示你的源代码,但我猜你在做什么:

string xml = ... retrieve ...;
XmlDocument doc = new XmlDocument();
doc.Load(xml); // error thrown here

Load 方法需要一个文件名 而不是 XML 本身。要加载实际的 XML,只需使用 LoadXml 方法:

... same code ...
doc.LoadXml(xml);

同样,使用 XDocument 时,Load(string) 方法需要一个文件名,而不是实际的 XML。但是,没有 LoadXml 方法,所以从字符串加载 XML 的正确方法是这样的:

string xml = ... retrieve ...;
XDocument doc;
using (StringReader s = new StringReader(xml))
{
doc = XDocument.Load(s);
}

事实上,在开发任何东西时,注意参数的语义(含义)而不仅仅是它们的类型是一个非常好的主意。当参数的类型是 string 时,并不意味着可以输入任何字符串。

另外关于您更新的问题,同时使用 XmlDocumentXDocument 是没有意义的。选择一个或另一个。

关于c# - 路径中的 XML 非法字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4057938/

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