0

XML ファイルを生成するための簡単なツールを作成しました。ここ数日、このツールを使用していますが、問題は発生していません。それから昨日私はそれを使いに行きました、そして私は次のエラーを得ています:

XmlException: ドキュメント要素が表示されませんでした。file:///C:/DarkRideSettings/DarkrideSettings.xml 行 1、位置 1。

私の理解では、このエラーは、コンピューターがコード内の指定された場所に XML ファイルを見つけられないことを示しています。問題は、文字通り前日にこのコードを使用したことで、XML ファイルがあるべき場所にあるということです。

XML を記述するためのコードは次のとおりです。

  public void WriteXMLFile()
{
    // location of the file
    string _filePath = "C:\\DarkRideSettings\\DarkrideSettings.xml";
    XmlDocument _xmlDoc = new XmlDocument();

    // if the file exists
    if (File.Exists(_filePath))
    {
        // load it in
        _xmlDoc.Load(_filePath);
        // clear out the previous data
        _xmlDoc.RemoveAll();

        // create the main root node
        XmlNode rootNode = _xmlDoc.CreateElement("Settings");
        _xmlDoc.AppendChild(rootNode);

        // corners node (next layer down)
        XmlElement _cornerNode = _xmlDoc.CreateElement("Screen_Corners");
        _xmlDoc.DocumentElement.PrependChild(_cornerNode);

        #region Top Left Corners XYZ Values

        // indent top left corner value to screen corners
        XmlElement _topLeftNode = _xmlDoc.CreateElement("Top_Left");
        _cornerNode.AppendChild(_topLeftNode);

        // set the XYZ of the top left values
        XmlElement _topLeftXNode = _xmlDoc.CreateElement("TopLeftX");

        // take string value and convert to float for use in final calculation
        float _topLeftXFloat = Convert.ToSingle(_screenWidthString);
        float _topLeftX = -_topLeftXFloat / 2.0f;
        _topLeftXNode.InnerText = Convert.ToString(_topLeftX);

        XmlElement _topLeftYNode = _xmlDoc.CreateElement("TopLeftY");
        _topLeftYNode.InnerText = _screenHeightString;

        XmlElement _topLeftZNode = _xmlDoc.CreateElement("TopLeftZ");
        float _topLeftZFloat = Convert.ToSingle(_distanceFromScreenString);
        float _topLeftZ = _topLeftZFloat / 2.0f;
        _topLeftZNode.InnerText = Convert.ToString(_topLeftZ);

        // indent these values to the top_left value in XML
        _topLeftNode.AppendChild(_topLeftXNode);
        _topLeftNode.AppendChild(_topLeftYNode);
        _topLeftNode.AppendChild(_topLeftZNode);

        #endregion

        _xmlDoc.Save(_filePath);

    }
}

このコードは、問題なく XML ファイルを生成します (スペースを節約するために、このメソッドのコードの一部を省略していますが、特に重要なことは何もありません)。

自分のコードにあるはずの何かが欠けているかどうか (昨日言ったように、正直に言って、昨日はうまくいきました!)、またはこのエラーをどのように打ち負かすことができるかを誰でも見ることができますか? 私の XML ファイルは必要な場所にあるはずです。そうでなかったとしても、私のコードは新しいファイルを作成する必要があります。

私を助けてください。

4

2 に答える 2

1

最初に作成したルート要素は使用しません。作成した後は、を使用し_xmlDoc、を置き換えます。すべてが機能_xmlDocするrootNodeと思います。

 XmlNode rootNode = _xmlDoc.CreateElement("Settings");
于 2013-01-09T11:56:06.850 に答える
0

問題と思われるのはファイルの内容です。

xml root elementファイルの先頭にが表示されていることを確認してください。次のようになります

<?xml version="1.0"?>

于 2013-01-09T11:53:22.400 に答える