Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在PCL中使用XDocument解析XML时处理未知实体_C#_Xml_Linq To Xml_Portable Class Library - Fatal编程技术网

C# 在PCL中使用XDocument解析XML时处理未知实体

C# 在PCL中使用XDocument解析XML时处理未知实体,c#,xml,linq-to-xml,portable-class-library,C#,Xml,Linq To Xml,Portable Class Library,我试图在可移植类库中使用XDocument(LINQ到XML)加载XHTML 1.1文档,但收到一个无法解析实体的异常: System.Xml.XmlException: Reference to undeclared entity 'nbsp'. Line 10, position 23. at System.Xml.XmlTextReaderImpl.Throw(Exception e) at System.Xml.XmlTextReaderImpl.HandleGeneralE

我试图在可移植类库中使用
XDocument
(LINQ到XML)加载XHTML 1.1文档,但收到一个无法解析实体的异常:

System.Xml.XmlException: Reference to undeclared entity 'nbsp'. Line 10, position 23.
   at System.Xml.XmlTextReaderImpl.Throw(Exception e)
   at System.Xml.XmlTextReaderImpl.HandleGeneralEntityReference(String name, Boolean isInAttributeValue, Boolean pushFakeEntityIfNullResolver, Int32 entityStartLinePos)
   at System.Xml.XmlTextReaderImpl.HandleEntityReference(Boolean isInAttributeValue, EntityExpandType expandType, Int32& charRefEndPos)
   at System.Xml.XmlTextReaderImpl.ParseText(Int32& startPos, Int32& endPos, Int32& outOrChars)
   at System.Xml.XmlTextReaderImpl.ParseText()
   at System.Xml.XmlTextReaderImpl.ParseElementContent()
   at System.Xml.XmlTextReaderImpl.Read()
   at System.Xml.Linq.XContainer.ReadContentFrom(XmlReader r)
   at System.Xml.Linq.XContainer.ReadContentFrom(XmlReader r, LoadOptions o)
   at System.Xml.Linq.XDocument.Load(XmlReader reader, LoadOptions options)
   at System.Xml.Linq.XDocument.Load(Stream stream, LoadOptions options)
   at ShatteredTemple.EpubTweaker.EpubTweaker.LoadXDocumentFromZipFile(ZipFile epub, ZipEntry zipEntry) in [path omitted]\EpubTweaker.cs:line 159
(因此,我不想在
标签中发布这些内容-为错误的代码格式表示歉意。)

通常,我会尝试按照嵌入DTD。但是,这需要创建一个定制的
XmlResolver
,PCL似乎无法使用它

使用
XmlReaderSettings
尝试禁用
CheckCharacters
DtdProcessing
没有任何作用


在PCL中解析XML时,有没有关于如何处理“未知”实体的建议?我更愿意继续使用LINQ to XML/
XDocument
,但我可能会对其他XML解析器开放,只要他们可以在文档中添加XML声明(
),如果其中一个声明缺失。

错误表明它位于第10行(而不是第1行):“nbsp”。第10行,第23位我不确定这和我的问题有什么关系。是的,有问题的实体位于XHTML文件的第10行。但这不是需要在XHTML中“修复”的东西——它是一个完全有效的XHTML1.1输入,但XDocument无法解析它,因为它无法加载DTD。这是我的想法,但我不想得出任何结论。Net库不适用于xml 1.1(仅1,0)。在这种情况下发布异常会导致xml出现错误的结论。我仍然会使用一行xml检查器进行双重检查,以确保xml是有效的。如果您使用的是完整的框架,那么根据我链接到的问题,您可以使用定制的XmlResolver来支持它。但由于PCL中似乎没有这种功能。。。我想我应该问这个问题,看看我是否缺少任何可用的PCL兼容的替代方案。@jdweng这不是XML1.1,而是XHTML1.1。XHTML仍然是XML1.0。这里的错误非常常见,因为XHTML DTD定义了各种实体,如
nbsp
。错误表示它位于第10行(不是第1行):“nbsp”。第10行,第23位我不确定这和我的问题有什么关系。是的,有问题的实体位于XHTML文件的第10行。但这不是需要在XHTML中“修复”的东西——它是一个完全有效的XHTML1.1输入,但XDocument无法解析它,因为它无法加载DTD。这是我的想法,但我不想得出任何结论。Net库不适用于xml 1.1(仅1,0)。在这种情况下发布异常会导致xml出现错误的结论。我仍然会使用一行xml检查器进行双重检查,以确保xml是有效的。如果您使用的是完整的框架,那么根据我链接到的问题,您可以使用定制的XmlResolver来支持它。但由于PCL中似乎没有这种功能。。。我想我应该问这个问题,看看我是否缺少任何可用的PCL兼容的替代方案。@jdweng这不是XML1.1,而是XHTML1.1。XHTML仍然是XML1.0。这里的错误非常常见,因为XHTML DTD定义了各种实体,如
nbsp