如果按文件

时间:2017-09-08 12:52:30

标签: .net xml vb.net linq

如果我使用VS 2017最新补丁通过保存的文件查询以下XML代码,问题是我无法获得任何结果。

Dim SettingsFileAsElement As XElement = XElement.Load("MyXmlFile.xml")

在VB.NET中使用LINQ:

<?xml version="1.0" encoding="utf-8" ?>
<Settings>
  <ConnnectionString>
    <ID>1</ID>
    <Name>ConnString 1</Name>
  </ConnnectionString>
</Settings>

我的查询

Dim ConnnectionStrings = From ConnnectionString In SettingsAsElement...<ConnnectionString> _
                                Select ConnnectionString
 ' ConnnectionStrings as IEn(Of XElement)

工作正常,如果它像字符串一样使用

Dim SettingsAsElement As XElement = <Settings>
                                      <ConnnectionString>
                                         <ID>1</ID>
                                         <Name>ConnString 1</Name>
                                       </ConnnectionString>
                                     </Settings>

文件的打开工作正常,我可以访问所有属性。 关键是,如果我比较XElements的属性( SettingsFileAsElement与SettingsAsElement ),它们是相同的。

FirstNode From String:1 ConnString 1

FirstNode From File:1 ConnString 1

HasAttributes From String:False

HasAttributes From File:False

来自String的HasElements:True

文件中的HasElements:True

IsEmpty From String:False

IsEmpty From File:False

LastNode From String:1 ConnString 1

LastNode From File:1 ConnString 1

字符串名称:设置

文件名称:设置

NodeType From String:Element

NodeType From File:Element

来自字符串的值:1ConnString 1

文件中的值:1ConnString 1

我甚至尝试使用XDocument访问该文件并查询它,然后我尝试将XDocument解析为XElement。结果对两者都没有。

我认为这可能是我的项目中的一些问题。所以我开了一个新的。只针对这个问题;但没有任何作用。

有什么想法吗? BG - Sven

编辑: 工作代码:

    Dim SettingsAsElement As XElement = <Settings>
                                    <ConnnectionString>
                                        <ID>1</ID>
                                        <Name>ConnString 1</Name>
                                    </ConnnectionString>
                                    </Settings>
    '------
        Dim ConnnectionStrings = From ConnnectionString In SettingsAsElement...<ConnnectionString> _
                                Select ConnnectionString

        For Each ConnnectionString In ConnnectionStrings
            ListBox1.Items.Add(ConnnectionString.<Name>.Value)
        Next
   ' returned "data" in ConnnectionStrings = "ConnString 1"

不工作代码:

        Dim SettingsFileAsElement As XElement = XElement.Load(Path)

        ConnnectionStrings = From ConnnectionString In SettingsFileAsElement...<ConnectionString> _
                                    Select ConnnectionString

        For Each ConnnectionString In ConnnectionStrings
            ListBox1.Items.Add(ConnnectionString.<Name>.Value)
        Next
   ' returned "data" in ConnnectionStrings = Nothing

1 个答案:

答案 0 :(得分:0)

您的文件代码缺少3个“n”的拼写错误“ConnnectionString”。

尝试

ConnnectionStrings = From ConnnectionString In SettingsFileAsElement...<ConnnectionString> _
                                    Select ConnnectionString

<ConnnectionString>中的3“n”。

或者更好的是,将拼写错误修复为两个“n”s