我如何可以访问使用C#.NET Web的网页有WebMatrix的一个XML元素的值?(How ca

2019-08-20 23:16发布

我看了很多的资源,做了很多的研究,并尝试了许多“最佳猜测”在使用WebMatrix中使用C#,网络寻呼的时间访问一个单一的元素,但没有我想被打通。

考虑一个简单的XML文档,看起来像这样:

<root>
    <requisitionData>
        <element1>I am element 1</element1>
        <element2>I am element 2</element2>
    </requisitionData>
</root>

我知道我可以使用foreach循环,就像这样:

@using System.Xml.Linq

XDocument doc = XDocument.Load(Server.MapPath("~/User_Saves/cradebaugh/testFile.xml"));

foreach (XElement element in doc.Descendants("requisitionData"))
{
    @element.Value
}

而这,当然,做工精细。 但如果我只是想存储的单一元素, <element1>的一个字符串变量的值?

我在这里看着(下面的链接),但我不能让这个代码的正面或反面(它几乎没有,甚至看起来像C#给我,但话又说回来,我很新的XML解析...):

http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/b14ce4d1-77f1-420d-ad91-0989794a1d45/

我还检查了这里: 如何从获取的XDocument XML节点

但是所示的代码是没有意义的,我在这里无论是。 我一直在想必须有要做到这一点,希望无需学习全新的查询方法更简单的方法。

---------------------------------的事情,我已经试过------------ ---------------------

XDocument doc = XDocument.Load(Server.MapPath("~/User_Saves/cradebaugh/testFile.xml"));

string element = doc.Descendants("requisitionData").Descendants("element1").Value;

错误我收到:“使用指令或程序集引用丢失

XDocument doc = XDocument.Load(Server.MapPath("~/User_Saves/cradebaugh/testFile.xml"));

XElement element = doc.Descendants("element1");
string val = element.Value;

错误我收到:无法隐式转换类型“System.Collections.Generic.IEnumerable”到“System.Xml.Linq.XElement”。 一个显式转换存在(是否缺少强制转换?)

我有,事实上,尝试过其他的东西,但我得到几乎相同的错误,如上图所示。 我是不是使这个难度比它的,还是我过于简单化呢?

-------------------------更新------------------------ ------

我能得到这个工作:

string element = doc.Element("root").Element("requisitionData").Element("element1").Value;

@element

然而,有一件事我关注这个方法的缺点是.Element选择“第一”的比赛,所以一个XML文档,看起来像这样的:

<root>
    <requisitionData>
        <element1>I am element 1</element1>
        <element2>I am element 2</element2>
    </requisitionData>
    <requisitionData>
        <element1>I am element 1</element1>
        <element2>I am element 2</element2>
    </requisitionData>
</root>

我怎么能访问的第二次出现<element1>

Answer 1:

@using System.Xml.Linq

XDocument doc = XDocument.Load(Server.MapPath("~/User_Saves/cradebaugh/testFile.xml"));

foreach (XElement element in doc.Element("root").Element("requisitionData").Descendants())
{
    string value = element.Value;
}

或使用XPath:

@using System.Xml.Linq
@using System.Xml.XPath

XDocument doc = XDocument.Load(Server.MapPath("~/User_Saves/cradebaugh/testFile.xml"));

foreach (XElement element in doc.XPathSelectElement("//requisitionData").Descendants())
{
    string value = element.Value;
}

更新:

如果你想选择例如第二<element1>从更新的例子节点:

string value = doc.XPathSelectElement("//requisitionData[2]/element1").Value;


文章来源: How can I access a single XML element's value using C#.net web-pages with WebMatrix?