在具有多个相似节点的C#中读取XML

在具有多个相似节点的C#中读取XML,c#,xml,xpath,nodes,C#,Xml,Xpath,Nodes,在一个项目中,我正在读取XML文件以获取字符串数据。它工作得很好,但有一个例外。以下是XML文件的结构: <Table> <row> <queryId>customAnalyticsParam</queryId> <queryStatement> 1|-1|-1|-1 </queryStatement> </row> </Table&g

在一个项目中,我正在读取XML文件以获取字符串数据。它工作得很好,但有一个例外。以下是XML文件的结构:

<Table>
    <row>
       <queryId>customAnalyticsParam</queryId>
       <queryStatement>
       1|-1|-1|-1
       </queryStatement>
    </row>
</Table>
在上面的代码中,第三行id是函数参数中提供的queryId。XML采用以下格式时会出现异常:

<Table>
   <row>
      <queryId>
      customAnalyticsParam
      </queryId>
      <queryStatement>
      1|-1|-1|-1
      </queryStatement>
   </row>
</Table>

客户分析SPARAM
1|-1|-1|-1
即queryId节点中前后的行空间。由于这些换行符,代码无法找到节点并返回null。

请帮助我找到一种方法。

谢谢尝试:

尝试:


您还可以使用LINQ to XML和简单的
Trim()
方法来删除空白

var xdoc = XDocument.Load(xml_query_filePath);
var statements = from r in xdoc.Descendants("row")
                 let queryId = (string)r.Element("queryId")
                 let statement = (string)r.Element("queryStatement")
                 where queryId.Trim() == id.Trim()
                 select statement.Trim();
或者,如果您只需要第一条语句(请注意,与在代码中一样,元素应该存在于xml中)


您还可以使用LINQ to XML和简单的
Trim()
方法来删除空白

var xdoc = XDocument.Load(xml_query_filePath);
var statements = from r in xdoc.Descendants("row")
                 let queryId = (string)r.Element("queryId")
                 let statement = (string)r.Element("queryStatement")
                 where queryId.Trim() == id.Trim()
                 select statement.Trim();
或者,如果您只需要第一条语句(请注意,与在代码中一样,元素应该存在于xml中)


尼斯,不知道规范化空间尼斯,不知道规范化空间
var xdoc = XDocument.Load(xml_query_filePath);
var statements = from r in xdoc.Descendants("row")
                 let queryId = (string)r.Element("queryId")
                 let statement = (string)r.Element("queryStatement")
                 where queryId.Trim() == id.Trim()
                 select statement.Trim();
var statement = xdoc.Descendants("row")
                    .First(r => r.Element("queryId").Value.Trim() == id.Trim())
                    .Element("queryStatement").Value.Trim();