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