C#中的SAX解析器等效工具

7

我有以下的Java代码,需要将其转换为C#,请帮忙...

public class Configuration {

  private ConfigContentHandler confHandler;

  public Configuration() {
  }

  public boolean parseConfigFile() throws Exception {
    boolean bReturn = true;

    SAXParser parser = SAXParserFactory.newInstance().newSAXParser();

    System.out.println("*** Start parsing");

    try {
       confHandler = new ConfigContentHandler(100);
       // Configuration file must be located in main jar file folder

       // Set the full Prosper file name
       String sConfigFile = "configuration.xml";

       // Get abstract (system independent) filename
       File fFile = new File(sConfigFile);

       if (!fFile.exists()) {
          System.out.println("Could not find configuration file " + sConfigFile + ", trying input parameters.");
          bReturn = false;
       }  else if (!fFile.canRead()) {
          System.out.println("Could not read configuration file " + sConfigFile + ", trying input parameters.");
          bReturn = false;
       } else {
          parser.parse(fFile, confHandler);
       }

    } catch (ArrayIndexOutOfBoundsException e) {
        System.out.println("Input error.");
    } catch (Exception e) {
        e.printStackTrace();
    }

    System.out.println("*** End parsing");
    return bReturn;
  }

谢谢

2个回答

10

C#原生XML解析器XmlReader不支持SAX,而且只能向前读取。可以参考这篇文章以了解一些关于它的具体要点。您可以使用模拟SAX解析器来使用XmlReader。如果它不符合您的需求,还可以使用XDocument,它是.NET中用于处理XML文件的不同API。因此,总的来说,在.NET框架中并没有内置推式XML解析器,如果您真的需要一个事件驱动的解析器,则可能需要使用第三方库或COM互操作到MSXML来实现。


1
该操作只想读取配置,但为了让对 SAX 解析感兴趣的其他人受益:一般情况下,您无法使用 XmlReader 模拟 SAX 解析器,因为 SAX 的概念是不同的:即使文档格式不正确且永远不会关闭,SAX 也会给我一个“打开元素标记”。XmlReader 只有在完成读取整个子树时才会将其全部返回,并且必须完整。这里 还有另一个 SAX 的端口,但我不确定它的价值。 - John

5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接