【问题标题】:How can I search through xml using linq如何使用 linq 搜索 xml
【发布时间】:2013-10-22 23:44:51
【问题描述】:

我想搜索我的 xml 文件。结构如下:

<AForetag xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Place ID="1006">
        <Foretag>
            <Epost>info@abc123.se</Epost>
            <Namn>Abe</Namn>
            <Ort>Abc123</Ort>
            <Adress>Abc123</Adress>
            <Postnummer>Abc123</Postnummer>
            <Landskap>Abc123</Landskap>
            <Telefon>Abc123</Telefon>
            <Medlemskap>Abc123</Medlemskap>
        </Foretag>
        <Foretag>
            <Epost>def456</Epost>
            <Namn>def456</Namn>
            <Ort>def456</Ort>
            <Adress>def456</Adress>
            <Postnummer>def456</Postnummer>
            <Landskap>def456</Landskap>
            <Telefon>def456</Telefon>
            <Medlemskap>def456</Medlemskap>
        </Foretag>
    </Place>
</Aforetag>

我想搜索元素&lt;Landskap&gt;。如果我得到并匹配,我应该选择所有其他元素,Epost、Namn、Ort、Adress、Postnummer、Landskap、Telefon 和 Medlemskap。我想放入数组中的信息。

我试过这个:

var aforetag = from foretag in doc.Descendants("Place")
                       where foretag.Attribute("ID").Value == "1006"
                       select foretag;


var landskap = aforetag.Elements("Foretag")
                       .Descendants()
                       .Where(x => x.Element("Landskap")
                       .Value
                       .Contains(s)
                       .Descendants()
                       .Select(c => (string)c)
                       .ToArray();

【问题讨论】:

  • 你试过了。而且,发生了什么?
  • 我会收到此警告:NullReferenceException 未处理。 Objectreferens 尚未获得对象的实例。 (抱歉翻译不好)它停止工作。
  • 所以,你也不知道什么是异常。几乎所有NullReferenceException 的情况都是一样的。请参阅“What is a NullReferenceException in .NET?”获取一些提示。
  • 让它工作。谢谢,我的 XML 架构搞砸了。里面有一些不好的值,比如'--'。
  • @faceplant 您的查询不好,我怀疑它不能按您的预期工作,除非您进行了一些修改以使其工作

标签: c# xml linq search nullreferenceexception


【解决方案1】:
var landskap = aforetag.Elements("Foretag")
                       .Where(e=>e.Element("Landskap").Value.Contains(s))
                       .Select(e=>e.Elements().Select(x=>x.Value).ToArray());
//the result is an IEnumerable<string[]> for the matched keyword s

【讨论】:

    【解决方案2】:

    您的代码格式不正确。把这个复制到VS里面有一些错误,修复一个和多个错误!...

    最重要的是,您的 XML 不是 XML,因为开始和结束标记甚至不匹配!另外,还有其他问题。

    解决所有这些问题,我相信它会有所帮助。

    【讨论】:

    • 它确实有帮助,很抱歉浪费了你们的时间。
    • @faceplant 别担心!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-28
    • 1970-01-01
    相关资源
    最近更新 更多