4

この XML は「有効」ですか?

<?xml version="1.0"?>
<p class="leaders">
    Todd
    <span class="leader-type">.</span>
    R
    <span class="leader-type">.</span>
    Colas
</p>

これがノードに対して行うように、ノードに対して複数の「値」を持つ XML ドキュメントを見たことがありません<p>

TXMLDocumentで 3 つの値を解析するにはどうすればよい<p>ですか? そして、<span>ノードにトラバースする方法は?

最後に... TXMLDocument を使用して、このような XML ドキュメントを作成するにはどうすればよいですか????

ヘルプ!!!!

4

2 に答える 2

6

はい、有効な XML です。これを解析するには、XML がノードのツリーとして表されることを理解する必要があります。その XML は、次のツリー構造に解析されます。

p
|_ attributes
| |_ "class"="leaders"
|
|_ children
  |_ #text "Todd"
  |
  |_ span
  | |_ attributes
  | | |_ "class"="leader-type"
  | |
  | |_ children
  |   |_ #text "."
  |
  |_ #text "R"
  |
  |_ span
  | |_ attributes
  | | |_ "class"="leader-type"
  | |
  | |_ children
  |   |_ #text "."
  |
  |_ #text "Colas"

各アトリビュートと子ノードは、 の個別のIXMLNodeインターフェイスとして表されますTXMLDocument。ご覧のとおり、プレーン テキスト部分は独自の#textノードに分割されています。

XML を にロードするTXMLDocumentと、TXMLDocument.DocumentElementプロパティは<p>ノードを表します。そのノードのAttributeNodesプロパティには「クラス」ノードが含まれており、そのプロパティにはノードとノードChildNodesの最初のレベルが含まれています。ノードには独自のandリストなどがあります。したがって、これを解析するには、ノードを探してツリーを反復処理し、必要に応じてノードを使用してテキストを操作します。#text<span><span>AttributeNodesChildNodes#text<span>

このようなドキュメントを作成するには、必要に応じて個々のノードを作成するだけです。

Doc.Active := False;
Doc.Active := True;

Node := Doc.AddChild('p');
Node.Attributes['class'] := 'leaders';

Child := Doc.CreateNode('Todd', ntText);
Node.ChildNodes.Add(Child);

Child := Node.AddChild('span');
Child.Attributes['class'] := 'leader-type';
Child.Text := '.';

Child := Doc.CreateNode('R', ntText);
Node.ChildNodes.Add(Child);

Child := Node.AddChild('span');
Child.Attributes['class'] := 'leader-type';
Child.Text := '.';

Child := Doc.CreateNode('Colas', ntText);
Node.ChildNodes.Add(Child);

Doc.SaveTo...(...); // generate the XML to your preferred output

空白/改行を XML 出力に表示する場合は、#textノードのコンテンツにそれらの文字を含めるだけです。XML を に解析するときTXMLDocument、不要な空白はデフォルトで取り除かれます。保持する場合は、XML をロードする前poPreserveWhiteSpaceにプロパティでフラグを有効にします。ParseOptions

于 2012-08-01T18:53:30.900 に答える
6

あなたが言うとき、それは有効ですか?それは整形式ですか?(DTD やスキーマがなければ有効かどうかはわかりません)。

はい、整形です。これは、混合コンテンツを含むドキュメントの完全に通常の例であり、XML はそのために設計されています。

TXMLDocument について聞いたことがないので、あなたの質問には答えられません。おそらく、それは Delphi XML ライブラリの一部です。

于 2012-08-01T16:00:54.523 に答える