我有一个大型XML文件(68Mb),我正在使用SQL Server Business Intelligence Studio 2008将XML数据提取到数据库中。 XML文件中存在一些错误,导致其无法执行。可能是丢失的标签或类似的东西。该文件非常大,我无法手动对其进行排序以查找错误。
以下是使用的XML架构的示例。
如何使用XPath使用C#在VS 2012中对XML进行排序?
一个例子很棒!
-<PhoneNumberList>
<PhoneNumber value="1234567890" type="Phone"/>
</PhoneNumberList>
-<YearsOfServiceList>
<YearsOfService experienceInMonths="24" description="SuperAdmin" objectCode="049"/>
</YearsOfServiceList>
</Person>
-<Person dob="1960-01-09T00:00:00" lastName="Smith" middleName="Will" firstName="John" id="9999-9999-9999">
-<SiteList>
-<Site id="2014" siteLongName="HA" siteCode="1255" systemCode="999">
-<StaffPositionList>
<StaffPosition id="73" staffPosition="Administrator"/>
</StaffPositionList>
</Site>
</SiteList>
-<ProgramList>
<Program id="1234" siteLongName="ABC" siteCode="0000" systemCode="205"/>
<Program id="5678" siteLongName="DEF" siteCode="0000" systemCode="357"/>
</ProgramList>
-<TypeList>
<Type Description="Leader" certificateType="D"/>
<Type Description="Professional" certificateType="P"/>
</TypeList>
-<EmailList>
<Email value="jsmith@somesite.com" type="Email"/>
</EmailList>
-<PhoneNumberList>
<PhoneNumber value="1234567890" type="Phone"/>
</PhoneNumberList>
-<YearsOfServiceList>
<YearsOfService experienceInMonths="24" description="SuperAdmin" objectCode="049"/>
</YearsOfServiceList>
</Person>
</PersonList>
</GetPersonDetail>
答案 0 :(得分:1)
如果您想在代码中执行此操作,请创建一个描述数据有效格式的XSD文件,将其作为资源嵌入到您的应用中,然后使用此类代码
var errors = new List<string>();
var schemaSet = new XmlSchemaSet();
schemaSet.Add("", XmlReader.Create(new StringReader(Properties.Resources.NameOfXSDResource)));
document.Validate(schemaSet, (sender, args) =>
{
errors.Add(args.Message);
}
);
这将为您提供验证错误列表。
答案 1 :(得分:0)
您不需要手动搜索&#34;&#34;如果您使用合格的文本编辑器。例如,NotePad ++的XML插件可以确定您的XML整体是否格式正确或有效,并且两个实例都将提供单独的错误消息。
如果您没有架构并且文件格式正确,则可以使用CLR的System.XML
命名空间读入文档,然后使用LINQ迭代其节点to-XML,它可以让你非常精细地控制哪些节点去哪里。使用LINQ,您可以创建一个只包含有效条目的新XML文件,在确定无效条目的位置时,可以在程序上更正这些条目,甚至只是直接写入SQL服务器数据库。
您的问题排查过程应如下所示:
答案 2 :(得分:0)
对于这样的事情,我通常可以在Notepad++中检查并修复数据。安装XmlTools插件,它有一个用于检查xml语法和标签的菜单。
此外,这些破折号会给你带来麻烦,最好直接保存xml文件而不用手动复制。
答案 3 :(得分:0)
对于XML编辑器(如XMLBlueprint 64位(http://www.xmlblueprint.com/)或Stylus Studio(http://www.stylusstudio.com/),68 MB XML文件没有问题。只需检查xml文件的格式良好(XMLBlueprint中的F7),编辑器就会显示错误。