C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: XMLの読込み


(過去ログ 89 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■53162 / inTopicNo.1)  XMLの読込み
  
□投稿者/ パンダ (1回)-(2010/09/05(Sun) 00:11:41)

分類:[C#] 

いつもお世話になっております。
パンダと申します。

・WinXPSP3
・C#2008Express

早速ですが、XMLファイルのログファイルを集計するツールを作っているのですが、読込み時下記のエラーが発生して困っております。
試しにxml versionを1.0にすれば問題ないのですが、xml version=1.1だと問題が発生しています。

何か回避する方法を教えていただけないでしょうか?
よろしくお願いいたします。

■エラー
バージョン番号 '1.1' は無効です。 行 1、位置 16 です。

■ソース
-+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+-
using System.Xml;

namespace XmlReaderSample1
{
class Program
{
static void Main(string[] args)
{
XmlReader reader = null;
XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Document;

// 「XmlReader」の作成
reader = XmlReader.Create("test.xml", settings);
while (reader.Read())
{
//
// 読込み処理・・・
//
}
}
}
}
-+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+-


■test.xml
-+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+-
<?xml version="1.1" encoding="UTF-8"?>
<Event>
<Element>
<Date>"2008/09/12,13:46:34"</Date>
<EventCode>"001"</EventCode>
<Message>"開始処理"</Message>
<Date>"2008/09/12,13:46:41"</Date>
<EventCode>"002"</EventCode>
<Message>"終了処理"</Message>
</Element>
</Event>
-+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+-



引用返信 編集キー/
■53163 / inTopicNo.2)  Re[1]: XMLの読込み
□投稿者/ Hongliang (700回)-(2010/09/05(Sun) 00:53:10)
http://msdn.microsoft.com/ja-jp/library/system.xml.xmlreader.aspx
に明記されてますが、XmlReader は XML 1.0 の勧告に準拠しています。XML 1.1 には触れられていないことから考えて、恐らく XML 1.1 は未サポートです。

そもそも何故 XML 1.1 を選択したのでしょうか?
引用返信 編集キー/
■53166 / inTopicNo.3)  Re[2]: XMLの読込み
□投稿者/ パンダ (2回)-(2010/09/05(Sun) 09:44:01)
Hongliang さん
 早速の返信ありがとうございます。 
 私も色々と調べてみたのですが、分からなくて。
 
> そもそも何故 XML 1.1 を選択したのでしょうか?

 依頼されたファイルがXML 1.1なんです(涙)
 全く理由が無いと思うのですが・・・

 やはり1行毎読み込んで解析するように作るしかないでしょうか?
 Grep置換で1.1→1.0も考えているのですが、操作が増えると嫌がられるし。
 
 何か良い案がございましたらご教授お願いいたします。

引用返信 編集キー/
■53167 / inTopicNo.4)  Re[3]: XMLの読込み
□投稿者/ επιστημη (2551回)-(2010/09/05(Sun) 10:20:53)
επιστημη さんの Web サイト
>  何か良い案がございましたらご教授お願いいたします。

Apache Xerces なら XML1.1 対応していますから、C++/CLIで読み出しコード書いて、
そいつをC#から呼び出せばなんとか。
# C++でちょいちょいと書いてみたらばあっさり読めました。

> Grep置換で1.1→1.0も考えているのですが、操作が増えると嫌がられるし。

操作を増やさんよう、アプリ内部でこっそりやっちまったらどうでしょう。

引用返信 編集キー/
■53168 / inTopicNo.5)  Re[3]: XMLの読込み
□投稿者/ やじゅ (1715回)-(2010/09/05(Sun) 10:29:32)
やじゅ さんの Web サイト
No53166 (パンダ さん) に返信
>  やはり1行毎読み込んで解析するように作るしかないでしょうか?
>  Grep置換で1.1→1.0も考えているのですが、操作が増えると嫌がられるし。
>  

XmlReader.Createメソッドは、引数でURI以外にStream等あるので、XMLファイルを読み込んで
1.1→1.0に文字列置換してから読めばいいよね。
http://msdn.microsoft.com/ja-jp/library/system.xml.xmlreader.create(v=VS.80).aspx
引用返信 編集キー/
■53171 / inTopicNo.6)  Re[4]: XMLの読込み
□投稿者/ Hongliang (701回)-(2010/09/05(Sun) 10:48:07)
> XmlReader.Createメソッドは、引数でURI以外にStream等あるので、XMLファイルを読み込んで
> 1.1→1.0に文字列置換してから読めばいいよね。

意味があって XML 1.1 を選択していたのだとすれば、XML 宣言をごまかしただけでは読み込めない可能性があります。
引用返信 編集キー/
■53172 / inTopicNo.7)  Re[5]: XMLの読込み
□投稿者/ パンダ (3回)-(2010/09/05(Sun) 10:58:37)
επιστημη さん
やじゅ さん
Hongliang さん

返信ありがとうございます。

とりあえず現在の仕様では宣言を XML 1.0にすれば問題が無いので、やじゅさんのアドバイスを参考にさせていただ、内部で宣言を変更して作ってみます。

アドバイスありがとうございました。




解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -