如何将XML与WebMatrix razor(C#)结合使用

如何将XML与WebMatrix razor(C#)结合使用,c#,xml,razor,webmatrix,C#,Xml,Razor,Webmatrix,我需要知道如何将XML与我使用的至少一种语言(最好是WebMatrix C#)一起使用(特别是读取),但我过去曾多次尝试使用JavaScript,但没有一个在线示例(StackOverflow或其他)足够完整,可以让它为我工作(请记住,我没有实际的XML经验,当然我已经完成了有关XPath、XML等的简单教程,但我们都知道这些教程有多么简短和不完整) 我现在想在WebMatrix C#中这样做,因为在服务器端处理它似乎更容易管理,而且对用户来说也更快 当我尝试使用以下代码使用在线给出的一些示例时

我需要知道如何将XML与我使用的至少一种语言(最好是WebMatrix C#)一起使用(特别是读取),但我过去曾多次尝试使用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,只是在示例中) 以及保存在App_Code文件夹中名为test.xml的测试xml文档

尝试从xml文档中的两个字段读取某些测试值时出错。以下是测试xml文档:

<?xml version="1.0" encoding="utf-8" ?>
<someNode>
    <someValue>HEY THERE! I'M XML!</someValue>
    <someValueTwo>Another Value</someValueTwo>
</someNode>
(第6行是错误所在的行)

我遗漏了什么?这些例子看起来很简单,但事实并非如此


老实说,我已经对WebMatrix有了足够的了解,可以在不使用XML的情况下实现我的目标(我总是可以使用数据库或呈现页面等),但我有点厌倦了这种不断逃避我的标记语言,原因很简单,因为我无法用我使用的任何语言(JavaScript、jQuery、C#)读取XML文件.

我发现我在使用
XmlDocument
xmlnodel
XmlNodeList
类以及使用XPath指定所需元素方面取得了更大的成功。但是,这需要您对XML文件的结构有一定的了解

var file = XmlDocument.Load(Server.MapPath(@"/App_Code/Test.xml"));
var results = file.SelectNodes("someNode/*")
这将
results
设置为一个
XmlNodeList
,其中包含
someNode
的所有子节点。您可以将
results
作为XmlNodes的
列表进行迭代。然后,您可以在每个节点上执行与第2行中使用的XPath查询类似的XPath查询,以获取子节点

XPath语法:

我很抱歉使用C#而不是VB.net进行以下操作,但我不熟悉foreach的VB语法

foreach(XmlNode aNode in results){
  string value = aNode.InnerText
}
将为
someValue
节点提供“嘿!我是XML!”\

编辑:根据我在下面评论中链接的内容,尝试以下操作:

@using System.Xml.Linq
@{
    var file = XmlDocument.Load(Server.MapPath(@"/App_Code/Test.xml"));
    var results = file.SelectNodes("someNode/*");
       select new { Name = e.Element("someValue").Value, Sales = e.Element("someValueTwo").Value };
    /*Do something with each node*/
    foreach(XmlNode aNode in results)
    {
       string value = aNode.InnerText
    }
}

哦,别担心,我也不使用VB.net。我也使用C#,很好奇你为什么认为我使用了VB,但我喜欢你的答案,如果你用这种方法更成功,我会理解的。至少对我来说,这似乎更有意义。我不认为在WebMatrix中这样做……谢谢你的尝试:)IntelliSense在这里没有看到某些方法(这意味着它们要么不存在,要么不导入,要么超出范围),我以为您使用的是VB,因为您的代码部分使用
var
。这里的函数都是C#的System.Xml的一部分。我从未与WebMatrix合作过。还有我的坏朋友。我复制了你的代码。将“XDocument”误读为“XmlDocument”,我已经修复了代码。不,这可能适用于原始C#,但在Webmatrix中不适用,thnx
foreach(XmlNode aNode in results){
  string value = aNode.InnerText
}
@using System.Xml.Linq
@{
    var file = XmlDocument.Load(Server.MapPath(@"/App_Code/Test.xml"));
    var results = file.SelectNodes("someNode/*");
       select new { Name = e.Element("someValue").Value, Sales = e.Element("someValueTwo").Value };
    /*Do something with each node*/
    foreach(XmlNode aNode in results)
    {
       string value = aNode.InnerText
    }
}