1

我有一个 400kb 的大 xml 文件。

当我尝试使用以下方法加载它时:

  • IXMLDocument 的 LoadXMLData 或
  • CreateOLEObject('MSXML2.DOMDocument.4.0')' 加载方法

我在这两种方法中都得到了未定义的错误。我拿了文件并粘贴到 xml 验证网页,它验证了 ok...

我还可以做些什么?

顺便问一下,元素中的属性是否有最大长度?

编辑

似乎它无法加载长属性...我在 xml 的属性值中有另一个 xml 的一部分...

An error pops up: Undefined error. Line: 1 (here is the begining of the xml)
Class of the exception is: EDOMParseError

一般来说,我想达到这样的目标:

<doc type="X223">
  <params id_param="51" value="XML_1" />
  <params id_param="52" value="XML_2" />
  <params id_param="53" value="XML_3" />
</doc>
4

1 回答 1

2

如果您可以更改您的架构,最好将您的内部 XML 文件存储到CDATA section,如果不能,请尝试考虑以下内容。

解析器在您的元素属性值上失败很可能是由于您尝试存储在那里的 XML 文件中包含引号字符。例如,考虑以下情况:

<params id_param="51" value="<innerxmlattributevalue="value">"/>

如您所见,您可能会将解析器与来自该内部 XML 的引号字符混淆,因此它可以将上面的行视为:

<params id_param="51" value="<innerxmlattributevalue="
value">"/>     <-- here is expected to be another attribute or closing bracket

当您想要保留当前模式时,您可以做的最简单的事情是转义内部 XML 文件的所有引用字符。

RFC 2629规范(由我强调):

确保所有属性值都被引用,例如,"<example name='value'>"如果该值包含一个引用字符,则使用另一个引用该值,例如,"<example name='"'>"如果 该值包含两个引用字符,则使用其中一个引用值,并用'&apos;'(撇号)或(引号)替换属性值中该字符的出现"&quot;" ,例如,"<example name='"&apos;"'>"

于 2012-11-29T11:29:31.800 回答