XMLファイルを読み込むにはどんなメソッドを使えばいいんでしょうか?
あるサイトにはXmlToDomParser.fileToDomを使うように書いてありますが、構文チェックをすると「未定義の識別子」と出てきます。
----------
var
Doc: TdomDocument;
begin
Doc := XmlToDomParser1.fileToDom('test.xml');//未定義の識別子:fileToDom
end;
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も書いたほうがよいかもしれません。
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;
------
ごめんなさい、ひとつ忘れていました。
>>あるサイトにはXmlToDomParser.fileToDomを使うように書いてありますが、
のように、あるサイト とだけ書かずに、そのサイトのURLも書いたほうがよいかもしれません。
http://www.teppi.com/Components/Article/xdom_0010/に書かれていました。
test.xmlを直接DOM(?)に読み込むことは諦めて、
OpenTextFileDialog1とLoadFromStreamを使うことを考えています。
読み込んだファイルからある要素のテキストにアクセスするには、どんなメソッドを使えばいいんでしょうか?
ちなみに
Delphi XE Starter EditionでXMLをパースする - Open XML
http://blogs.embarcadero.com/teamj/2011/06/06/2080/
には、
>TXmlToDomParserのDOMImplプロパティにTDomImplementationを結び付けます。
とありますが、指定されてますか?
>>TXmlToDomParserのDOMImplプロパティにTDomImplementationを結び付けます。
>とありますが、指定されてますか?
はい、オブジェクトインスペクタで指定しています。
>はい、オブジェクトインスペクタで指定しています。
では、他に、
>EParserExceptionの'Signal Processing Exception'が出ます。
が出るソースコードの場所とか原因とか、調べるのもよいかもしれません。
igyさん、いろいろと回答ありがとうございます。
Open XMLは、私には難しいので、あきらめて正規表現でやってみることにしました。
ツイート | ![]() |