簡體   English   中英

使用C#和XDocument進行XML解析-XmlException:預期為“文件”

[英]XML Parsing with C# and XDocument - XmlException: 'file' is expected

我有這個錯誤:

XmlException:預期為“ chipdb”文件:/// C:/Users/Mkh/Documents/MMBN3D/Assets/Resources/ChipDatabase.xml第12行,位置8。

嘗試解析以下文件時:

<?xml version="1.0" encoding="ISO-8859-1"?>
<chipdb>
    <chip>
        <name> Cannon1 </name>
        <dmg> 30 </dmg>
        <smallicon> </smallicon>
        <bigicon> </bigicon>
        <type> Straight </type>
        <element> None </element>
        <description> One of the most basic chips. </description>
    </chip>
</chipbd>

我只需要找到正確的芯片,然后使用此數據來啟動將在其他地方使用的芯片對象。 為此,我使用XDocument,但由於從未使用過XML,因此遇到了一些麻煩。 我編寫的代碼如下:

    using UnityEngine;

using System.Xml.Linq;
using System.Collections;

public class XMLAttackParser : MonoBehaviour
{
    XDocument doc;

    // Use this for initialization
    void Start ()
    {
        doc = new XDocument();
        doc = XDocument.Load( "Assets/Resources/ChipDatabase.xml" );
    }

    // Update is called once per frame
    void Update ()
    {

    }

    bool searchChip ( string name )
    {
        var chips = doc.Descendants( "chip" );

        foreach (var item in chips)
        {
            if( item.Element( "name" ).ToString() == name )
            {
                Debug.Log( "Man" );
                return true;
            }
        }

        return true;
    }
}

有人可以幫我嗎? 謝謝。

您在文檔末尾將chipdb為結尾標簽: chipbd

有人指出(但刪除了他的消息),您在以下item.Element( "name" ).ToString()上也犯了一個錯誤: item.Element( "name" ).ToString()應該是:

item.Element( "name" ).Value

要么

(string)item.Element("name")

實際上, item.Element( "name" ).ToString() . item.Element( "name" ).ToString()將返回: <name> cannon1 </name>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM