使用する言語の少なくとも1つ(できればこれはWebMatrix C#)でXMLを使用する(具体的には読むだけ)方法を知る必要がありますが、過去にJavaScriptでこれを数回試みましたが、オンラインの例はありません(StackOverflowなどで)それを機能させるのに十分なほど完全です(実際のXMLの経験がないことを覚えておいてください。もちろん、XPathやXMLなどの簡単なチュートリアルを実行しましたが、どれほど簡潔でこれらのチュートリアルは不完全である可能性があります)。
サーバー側での処理は管理が簡単で、ユーザーにとっては高速であるように思われるため、WebMatrix C#でこれを実行したいと思います。
このコードを使用してオンラインで提供された例のいくつかを使用しようとしたとき:
@using System.Xml.Linq
@{
var file = XDocument.Load(Server.MapPath(@"/App_Code/Test.xml"));
var results = from e in file.Root.Elements()
select new { Name = e.Element("someValue").Value, Sales = e.Element("someValueTwo").Value };
var grid = new WebGrid(results);
}
(実際にはWebGridを使用する必要はありません。これは単なる例です)そして、Test.xmlという名前のApp_Codeフォルダーに保存されたテストxmlドキュメント。
xmlドキュメント内の2つのフィールドからいくつかのテスト値を読み取ろうとするとエラーが発生します。テストxmlドキュメントは次のとおりです。
<?xml version="1.0" encoding="utf-8" ?>
<someNode>
<someValue>HEY THERE! I'M XML!</someValue>
<someValueTwo>Another Value</someValueTwo>
</someNode>
そして、ここで、cshtmlファイルのさらに下のページに値を呼び出そうとします。
<p>This should be a fun test!<br/>And the value is...:
@foreach(var f in results)
{
<div>@f.Name</div>
<div>@f.Sales</div>
}
</p>
最後に、ページを実行したときに発生するエラーは次のとおりです(このテストまたはxmlの使用に関連する他のデータ、コード、またはファイルはサイトのどこにも存在しないことに注意してください)。
Object reference not set to an instance of an object.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
Source Error:
Line 4: var file = XDocument.Load(Server.MapPath(@"/App_Code/Test.xml"));
Line 5: var results = from e in file.Root.Elements()
Line 6: select new { Name = e.Element("someValue").Value, Sales = e.Element("someValueTwo").Value };
Line 7: var grid = new WebGrid(results);
Line 8: }
(6行目はエラーが発生した行です)
私は何が欠けていますか?例は、実際にはこれほど単純であるように動作しますが、わかりません。そうではない。
正直なところ、XMLを使用せずに目的を達成するためにWebMatrixについて十分に学びました(データベースを使用したり、ページをレンダリングしたりすることもできます)が、このマークアップ言語に飽き飽きしています。私が使用しているどの言語(JavaScript、jQuery、C#)でもXMLファイルから読み取ることができないという理由だけで。