代码之家  ›  专栏  ›  技术社区  ›  Idan

Dom与Sax——创建XML

  •  6
  • Idan  · 技术社区  · 15 年前

    我知道Sax和Dom在解析Xml方面有很大的区别,但是如何创建Xml呢?是否有一种方法可以使用Sax创建新的Xml,或者如果我想基于程序中的数据创建新的Xml文件,就必须使用DOM?

    谢谢

    9 回复  |  直到 15 年前
        1
  •  7
  •   Pascal MARTIN    15 年前

    引用维基百科,SAX是:

    萨克斯 (XML的简单API) 通道 分析器 XML的API。
    萨克斯 提供用于 .

    i、 如果你想用DOM来写一个XML文档,那么你可以用它来写。

        2
  •  4
  •   Santhosh Kumar Tekuri    15 年前

    可以使用SAX创建XML。见下文:

    http://code.google.com/p/jlibs/wiki/XMLDocument

    它是用Java编写的。但同样可以用C++实现;

        3
  •  2
  •   stacker    15 年前
    • 使用SAX,您可以编写大量数据,SAX还提供了更高的性能。

    你也可能对这件事感兴趣 What are the differences between SAX and DOM parser

    DOM and SAX Put to the Test

        4
  •  2
  •   Didier Trosset    15 年前

    另一方面,DOM用于创建内存中的结构和XML文档之间的映射。

    如果内存中的数据已经有了自己的数据结构(这比处理DOM结构方便得多),那么创建DOM数据结构将意味着复制数据。如果你有大量的数据,也许这不是你想要的。此外,在将DOM结构写入XML之前,必须完全创建DOM结构,从而将应用程序所需的内存大小增加一倍。此外,它还会在处理过程中造成延迟。

        5
  •  1
  •   Kangkan    15 年前

    DOM是创建文档的自然选择。

        6
  •  1
  •   Tronic    15 年前

    我还没有见过SAX风格的编写API,它是仅供阅读的。用于编写选项的是DOM和各种非标准化的构建器API(它们通常比DOM方便得多)。不同语言/库的非标准化API有所不同,但请参见。 Builder for Ruby . 我还为C++编写了类似的API,其中操作符重载:(这个例子只是测试一个可能的API,它实际上什么都不做)

    #include <string>
    
    struct XMLBuilder {
      XMLBuilder& operator[](std::string const& elemName) { return *this; }
      XMLBuilder& operator()(std::string const& attrName, std::string const& attrValue) { return *this; }
      XMLBuilder& operator()(std::string const& innerText) { return *this; }
      XMLBuilder& operator()(XMLBuilder const& innerDoc) { return *this; }
    };
    
    int main() {
      XMLBuilder()
        ["contact"](XMLBuilder()
          ["name"]("Patrick Hines")
          ["phone"]("type", "home")("206-555-0144")
          ["phone"]("type", "work")("425-555-0145")
          ["address"](XMLBuilder()
            ["street"]("...")
            ["zip"]("12345")
          )
        )
      ;
    }
    
        7
  •  1
  •   knatten Ciro Santilli OurBigBook.com    15 年前

    有时我只会使用printf来生成简单的XML,但通常使用XML绑定工具是值得的,例如。 Code Synthesis XSD

    通过这种方式,您可以进行静态检查,确保XML格式正确且有效,这确实有助于尽早发现错误。

        8
  •  0
  •   Bart van Heukelom    15 年前

    你可以试着找到一个.NET的等价物 XmlWriter 使用您的语言/平台。

        9
  •  0
  •   Deven Patil    12 年前