C# XML结束标记名必须与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开始标记完全匹配,包括任何名称空间前缀。 根据你的问题: 如何读取这样的文件,最好
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>