gpt4 book ai didi

c# - 解析 EntityName 时出错

转载 作者:数据小太阳 更新时间:2023-10-29 02:17:21 25 4
gpt4 key购买 nike

我正在尝试将 xml 文档加载到 C# 中的对象 XPathDocument 中。我的 xml 文档包括这一行:trés dégagée + rade当解析器到达那里时,它给了我这个错误:“解析 EntityName 时出错”我知道这是字符“é”的正常原因。有谁知道我怎样才能避免这个错误......我的想法是在 xml 文档中插入一个实体声明,然后用实体替换所有特殊字符......但是它很长而且我不确定它是否有效。你有其他想法吗?更简单?非常感谢

最佳答案

正要发布这个,就在这时服务器宕机了。我想我已经根据内存正确地重写了它:

我认为问题在于默认情况下 XPathDocument 使用 XmlTextReader 来解析所提供文件的内容和此 XmlTextReader 使用 ExpandEntitiesEntityHandling 设置。

换句话说,当您依赖默认设置时,XmlTextReader 将验证输入的 XML 并尝试解析所有实体。更好的方法是通过完全控制 XmlReaderSettings 手动执行此操作(我总是手动执行此操作):

string myXMLFile = "SomeFile.xml";
string fileContent = LoadXML(myXMLFile);

private string LoadXML(string xml)
{
XPathDocument xDoc;
XmlReaderSettings xrs = new XmlReaderSettings();
// The following line does the "magic".
xrs.CheckCharacters = false;

using (XmlReader xr = XmlReader.Create(xml, xrs))
{
xDoc = new XPathDocument(xr);
}

if (xDoc != null)
{
XPathNavigator xNav = xDoc.CreateNavigator();
return xNav.OuterXml;
}
else
// Unable to load file
return null;
}

关于c# - 解析 EntityName 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/700686/

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