【问题标题】:How to Get XMLNode From an XML File by using C# and the LineNumber without using LINQ->XML如何在不使用 LINQ->XML 的情况下使用 C# 和 LineNumber 从 XML 文件中获取 XMLNode
【发布时间】:2014-09-09 17:05:29
【问题描述】:

我想知道是否有办法在知道我有行号的情况下获取 xml 文档的 XmlNode,我使用 C#,我不想使用 Linq (XDocument) 我需要从 XmlDocument 获取 XmlNode .例如,如果我有这个 XML:

<Document>
<a key="1">AAA</a>
<a key="2">Aa</a>
<a key="3">aaA></a>
<a key="4">aA></a>
<b key="15">BbbB></b>
</Document>

我希望有一个函数将第 4 行作为输入并返回

<a key="3">aaA></a>

所有这些都没有使用 LINQ(仅使用 XmlDocument 和 XmlNode 语法......而不是 XDocument..) 提前致谢


更具体地说,我需要应答器而不是线例如如果 Xml 是这样的:

1. <Document>
2. <a key="1">AAA</a>
3. <a key="2">Aa</a>
4. <a key="3">
5. aaA
6. </a>
7. <a key="4">aA></a>
8. <b key="15">BbbB></b>
9. </Document>

我希望有一个函数将第 4 或 5 或 6 行作为输入,它将返回:

<a key="3">aaA</a>

【问题讨论】:

  • 如果你想通过行号来做,不要把它解析成XML,把它解析成文本文件。然后通过索引拉出你想要的字符串并解析它。在您的示例中,您想要的行号是 5。除非您建议您想要节点的第 4 行,在这种情况下,现在您正在解析 xml。
  • 如果您需要按行信息选择项目,您可能不得不使用XmlReader。查看stackoverflow.com/questions/621059/…MSDN ILineInfo

标签: c# xml


【解决方案1】:

您可以通过读取字符串文本并抓取您想要的行来做到这一点。但它只是一个字符串而不是 XmlNode。

要使用 XmlDocument 执行此操作,您需要选择根节点,并将该节点的子节点 -1 索引为该节点所占用的行。

        XmlNode root = doc.SelectSingleNode("//Document");
        XmlNode nodeIWant = root.ChildNodes[line - 1];

【讨论】:

  • 虽然您的示例适用于 OP 提供的文本,但它通常不是有效的方法,因为 XML 节点和行号之间没有连接。
  • 我明白,这就是为什么我的第一个建议是从文件中读取文本行。我还按照他的要求为他提供了一个解决方案。
猜你喜欢
  • 2019-03-02
  • 1970-01-01
  • 2011-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多