1
<Reports>
  <Databases>
    <Database>Axxest</Database>
    <Database>Axxest2</Database>
  </Databases>
</Reports>

読み方AxxestAxxest2c#を使用してこのようなxmlファイルを読みますか?

私はこれを試してみます:

XmlDocument xld = new XmlDocument();
xld.Load(XmlPath);
XmlNodeList xnl = xld.SelectSingleNode("Reports").ChildNodes;
tableList.Clear();
foreach (XmlNode xn in xnl)
{
    tableList.Add(xn.InnerText);
} 

しかし、何か問題がありますか?

4

3 に答える 3

1

SelectNodesメソッドを試してくださいXPath

XmlDocument xld = new XmlDocument();
xld.Load(XmlPath);
XmlNodeList xnl = xld.SelectNodes("Reports/Databases/Database");
foreach (XmlNode xn in xnl)
{
    tableList.Add(xn.InnerText);
}
于 2012-09-17T08:16:21.657 に答える
0

xml ファイルでいくつかのノードを見つけたい場合は、クエリに XPath を使用できます。w3schools で必要なのはこれだけです

コードをデバッグすると、xnl のカウントが 1 で、「データベース」ノードのみが含まれていることがわかります。"SelectSingleNode" は 1 つのノードを選択することを意味し、コードでは "Reports" が最初に選択され、次に "Databases" のみを含む子ノードを返します。Ria のコードを試すことができます。SelectSingleNode の代わりに SelectNodes を使用してください。ただし、「SelectSingleNode」は引き続き使用できます。これを試してください。

XmlNodeList xnl = xld.SelectSingleNode("Reports/Databases").ChildNodes;  

お役に立てば幸いです。

于 2012-09-17T09:49:14.913 に答える
0

ドキュメントの例を参照してください。

StringBuilder output = new StringBuilder();

String xmlString =
        @"<?xml version='1.0'?>
        <!-- This is a sample XML document -->
        <Items>
          <Item>test with a child element <more/> stuff</Item>
        </Items>";
// Create an XmlReader
using (XmlReader reader = XmlReader.Create(new StringReader(xmlString)))
{
    XmlWriterSettings ws = new XmlWriterSettings();
    ws.Indent = true;
    using (XmlWriter writer = XmlWriter.Create(output, ws))
    {

        // Parse the file and display each of the nodes.
        while (reader.Read())
        {
            switch (reader.NodeType)
            {
                case XmlNodeType.Element:
                    writer.WriteStartElement(reader.Name);
                    break;
                case XmlNodeType.Text:
                    writer.WriteString(reader.Value);
                    break;
                case XmlNodeType.XmlDeclaration:
                case XmlNodeType.ProcessingInstruction:
                    writer.WriteProcessingInstruction(reader.Name, reader.Value);
                    break;
                case XmlNodeType.Comment:
                    writer.WriteComment(reader.Value);
                    break;
                case XmlNodeType.EndElement:
                    writer.WriteFullEndElement();
                    break;
            }
        }

    }
}
OutputTextBlock.Text = output.ToString();
于 2012-09-17T07:57:28.680 に答える