Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.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# XML结束标记名必须与XML结束标记名完全匹配吗?_C#_Xml_Xml Parsing_.net 4.0 - Fatal编程技术网

C# XML结束标记名必须与XML结束标记名完全匹配吗?

C# XML结束标记名必须与XML结束标记名完全匹配吗?,c#,xml,xml-parsing,.net-4.0,C#,Xml,Xml Parsing,.net 4.0,我有以下XML(测试示例): 42 尝试使用读取文件时,会生成以下异常:第12行位置14上的“ss:Data”开始标记与“Data”的结束标记不匹配。第12行,第43位。 虽然W3C文档中的所有示例都显示了名称空间限定的结束标记,但MS Excel打开此类文件时没有任何警告 设置DataSet.Namespace=“ss”不会改变任何东西 如何读取这样的文件,最好不添加额外的库?是的,XML结束标记必须与XML开始标记完全匹配,包括任何名称空间前缀。 根据你的问题: 如何读取这样的文件,最好

我有以下XML(测试示例):


42
尝试使用读取文件时,会生成以下异常:
第12行位置14上的“ss:Data”开始标记与“Data”的结束标记不匹配。第12行,第43位。

虽然W3C文档中的所有示例都显示了名称空间限定的结束标记,但MS Excel打开此类文件时没有任何警告

设置
DataSet.Namespace=“ss”不会改变任何东西


如何读取这样的文件,最好不添加额外的库?

是的,XML结束标记必须与XML开始标记完全匹配,包括任何名称空间前缀。

根据你的问题:

如何读取这样的文件,最好不添加额外的 图书馆

如果要使用兼容的XML工具成功解析XML,必须将其修复为格式良好的XML。特别是,您必须将结束标记更改为:

根据:

[定义:以开始标记开始的每个元素的结尾 必须使用结束标记标记进行标记,该标记包含与 开始标记中给定的元素类型:]

根据你的问题:

而W3C文档中的所有示例都显示了名称空间限定的结束 标记,MS Excel将在没有任何警告的情况下打开此文件

那么MS Excel没有以兼容的方式处理XML,很可能会遗漏其他问题


另请参见

应该是:@jdweng是的,似乎完美的XML不应该是这样的。我的问题是:给定这个XML,在没有任何更改自由的情况下,我应该如何解析它?将“”的所有实例替换为“”,将“”的所有实例替换为“”可能会起作用,但我想知道是否有一种“更简单”的方法。@抽象:不应该这样做的不仅仅是“完美”XML。任何XML都不能像这样,否则就不是XML。谢谢。主要是我担心我丢失了类似
XmlReadMode
的值,而该文件实际上是一个格式良好的XML。现在我显然不得不使用选项3。你对相关问题的回答。是否有一个直接引用,即开始和结束标记必须都加前缀或都不加前缀?W3C页面--给人的印象是,可以将
STag ETag
扩展到
'''
,然后扩展到
'
。答案已更新,以显示XML建议中指出的结束标记名必须与开始标记名匹配的位置。
<?xml version="1.0" encoding="UTF-8"?><?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" >
<Styles>
<Style ss:ID="s21"><NumberFormat ss:Format="@"/></Style>
</Styles>
<Worksheet ss:Name="--">
<Table ss:ExpandedColumnCount="1" ss:ExpandedRowCount="1" x:FullColumns="1" x:FullRows="1" ss:StyleID="s21">
    <Column ss:StyleID="s21" ss:Width="184"/>
    <Row>   
        <Cell><ss:Data ss:Type="String">42</Data></Cell>
</Row></Table></Worksheet></Workbook>