0

プロジェクトの下の Resources フォルダーに含まれているいくつかの xml ファイルを読み込もうとしています。以下は私のコードです:

public void ReadXMLFile(int TFType)
{
        XmlTextReader reader = null;

        if (TFType == 1)
            reader = new XmlTextReader(MyProject.Properties.Resources.ID01);
        else if (TFType == 2)
            reader = new XmlTextReader(MyProject.Properties.Resources.ID02);


        while (reader.Read())
        {
            if (reader.IsStartElement())
            {
                switch (reader.Name)
                {
                    case "Number":
                   // more coding on the cases.
}

しかし、コンパイルすると、「QP2020E.Properties.Resources.ID01」に「パスに不正な文字が含まれています」というエラーが表示されます。何が悪いのか知っていますか?

4

3 に答える 3

1

XmlTextReaderコンストラクターには、ストリームまたは文字列が必要です。文字列を必要とするものは、URL(またはパス)を期待しています。あなたはそれにあなたの資源の価値を渡しています。文字列値をストリームに変換する必要があります。

これを行うにはStringReader(...)でラップします

reader = new XmlTextReader(new StringReader(MyProject.Properties.Resources.ID02)); 
于 2012-09-26T06:53:59.227 に答える
1

XMLTextReaderファイルの内容ではなく、ファイル パスを指定する必要があります。たとえば、次のように変更します。

reader = new XmlTextReader(MyProject.Properties.Resources.ID01);

に:

StringReader s = new StringReader(MyProject.Properties.Resources.XmlFile);
XmlTextReader r = new XmlTextReader(s);
于 2012-09-26T07:22:13.407 に答える
0

リソースから XML ファイルを読み取るには、この回答で説明されているように XDocument.Parse を使用します。

コードを次のように変更する必要があると思います。

public void ReadXMLFile(int TFType)
{
        XDocument doc = null;

        if (TFType == 1)
            doc = XDocument.Parse(MyProject.Properties.Resources.ID01);
        else if (TFType == 2)
            doc = XDocument.Parse(MyProject.Properties.Resources.ID02);


        // Now use 'doc' as an XDocument object
}

XDocument の詳細については、こちらをご覧ください。

于 2012-09-26T06:59:51.207 に答える