次の 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;
パーサーにや類似の XML エンティティを実際のテキスト (や など)Open XML
に変換させるにはどうすればよいですか?<
>
<
>
XML 仕様の定義済みエンティティの回避策を書くことができます: http://www.w3.org/TR/2008/REC-xml-20081126/#sec-predefined-ent
ただし、追加のエンティティノードには役立ちません...
関連: IXMLNode.IsTextElement が CDATA 要素に対して True を返さないのはなぜですか?