Open XMLでファイルを読み込みたいのですが

解決


QZ  2014-01-12 20:07:05  No: 45873

XMLファイルを読み込むにはどんなメソッドを使えばいいんでしょうか?
あるサイトにはXmlToDomParser.fileToDomを使うように書いてありますが、構文チェックをすると「未定義の識別子」と出てきます。
----------
var
    Doc: TdomDocument;
begin
   Doc := XmlToDomParser1.fileToDom('test.xml');//未定義の識別子:fileToDom
end;


igy  2014-01-13 20:29:31  No: 45874

Open XML は使ったことがないのですが、

>Doc := XmlToDomParser1.fileToDom('test.xml');

Doc := XmlToDomParser1.ParseFile('test.xml', False);
にしたら、どうなりますか?

あと、面倒くさいかもしれませんが、質問するとき、Delphiのバージョンとエディションを毎回書いたほうがよいかと思います。

また、
Open XMLを使いたいのですが
https://www.petitmonte.com/bbs/answers?question_id=8214

のように、元のOpen XMLから、XE5 Starter版でコンパイルできるように修正を加えている場合、上記リンク先も
添えて、その旨を書いていたほうがよいかもしれません。

それと、

>あるサイトにはXmlToDomParser.fileToDomを使うように書いてありますが、

のように、あるサイト とだけ書かずに、そのサイトのURLも書いたほうがよいかもしれません。


QZ  2014-01-14 00:43:20  No: 45875

igyさん、回答ありがとうございます。

>Doc := XmlToDomParser1.ParseFile('test.xml', False);
にしたら、どうなりますか?
EParserExceptionの'Signal Processing Exception'が出ます。

>あと、面倒くさいかもしれませんが、質問するとき、Delphiのバージョンとエディションを毎回書いたほうがよいかと思います。...
ごめんなさい、つい手を抜いてしまいました。
XE5のstarter版を使っています。

Open XMLインストールの手順ですが、以下の通りです。
Open XMLは、http://www.philo.de/xml/downloads.shtmlから
stable version であるAlternative Document Object Model v.4.3.5 をダウンロードし、
そのままではインストールできなかったので、エラーが出るたびに230という数字を260に書き換えてます。
さらに、http://www.teppi.com/Components/Article/xdom_0010/
に「NameSpace(名前空間)が宣言されているドキュメントでなければ名前検索が正しく動かない。 名前空間なしのドキュメントでXPath検索が動くようにするには、TDomElement, TDomAttributeのコンストラクタに以下の変更を加える必要がある。」とあり、記事通りTDomElement, TDomAttributeのコンストラクタに変更を加えています。
------
    FNodeName:= tagName;
    FLocalName := FNodeName; // K.Okada 2004/01/08 ← これを追加!

同様にTDomAttr.Createにも以下の一行を加える(もちろんFNameが初期化された次の行): 
    FLocalName := FNodeName;
------


QZ  2014-01-14 00:46:17  No: 45876

ごめんなさい、ひとつ忘れていました。
>>あるサイトにはXmlToDomParser.fileToDomを使うように書いてありますが、
のように、あるサイト とだけ書かずに、そのサイトのURLも書いたほうがよいかもしれません。

http://www.teppi.com/Components/Article/xdom_0010/に書かれていました


QZ  2014-01-14 19:07:29  No: 45877

test.xmlを直接DOM(?)に読み込むことは諦めて、
OpenTextFileDialog1とLoadFromStreamを使うことを考えています。
読み込んだファイルからある要素のテキストにアクセスするには、どんなメソッドを使えばいいんでしょうか?


igy  2014-01-14 19:35:27  No: 45878

ちなみに

Delphi XE Starter EditionでXMLをパースする - Open XML
http://blogs.embarcadero.com/teamj/2011/06/06/2080/

には、

>TXmlToDomParserのDOMImplプロパティにTDomImplementationを結び付けます。

とありますが、指定されてますか?


QZ  2014-01-14 20:12:55  No: 45879

>>TXmlToDomParserのDOMImplプロパティにTDomImplementationを結び付けます。
>とありますが、指定されてますか?

はい、オブジェクトインスペクタで指定しています。


igy  2014-01-14 20:32:59  No: 45880

>はい、オブジェクトインスペクタで指定しています。

では、他に、

>EParserExceptionの'Signal Processing Exception'が出ます。

が出るソースコードの場所とか原因とか、調べるのもよいかもしれません。


QZ  2014-01-19 17:31:10  No: 45881

igyさん、いろいろと回答ありがとうございます。
Open XMLは、私には難しいので、あきらめて正規表現でやってみることにしました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加