我有这个 XML 输入:
<?xml version="1.0" encoding="utf-8"?>
<string>
<N/A>
</string>
这是一个简短的代码示例来说明问题:
uses
xmldom, oxmldom, XMLDoc, XMLIntf;
procedure TForm1.Test;
var
Document : IXMLDocument;
StringNode : IXMLNode;
LessThanNode : IXMLNode;
begin
DefaultDOMVendor := 'Open XML';
Document := LoadXMLData(Memo1.Lines.Text);
StringNode := Document.DocumentElement;
LessThanNode := StringNode.ChildNodes.First;
ShowMessage(LessThanNode.Text); // Displays '' (an emtpy string)
ShowMessage(LessThanNode.XML); // Displays '<'
ShowMessage(StringNode.Text); // Causes an EXMLDocError, because the string node contains more than just a single node with NodeType = ntText
end;
如何让Open XML
解析器将<
,>
和类似的 XML 实体转换为它们的真实文本(如<
and >
)?
我可以为 XML 规范中的预定义实体编写一个解决方法:http: //www.w3.org/TR/2008/REC-xml-20081126/#sec-predefined-ent
不过,这对额外的实体节点没有帮助......