Tag: sax

保留数字字符实体字符,例如`
 
`在Java中解析XML时

我正在解析包含数字字符实体字符的XML,例如(但不限于) < > < > (Java中的换行回车)。 在解析时,我将节点的文本内容附加到StringBuffer,以便稍后将其写入文本文件。 但是,当我将String写入文件或将其打印出来时,这些unicode字符将被解析或转换为换行符/空格。 在Java中迭代XML文件的节点并将文本内容节点存储到String时,如何保留原始数字字符实体字符符号? demo xml文件的示例: 示例Java代码。 它加载XML,遍历节点并将每个节点的文本内容收集到StringBuffer。 迭代结束后,它将StringBuffer写入控制台,也写入文件(但没有 )符号。 将这些符号存储到字符串时,保留这些符号的方法是什么? 你可以帮我吗? 谢谢。 public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException, TransformerException { DocumentBuilderFactory documentFactory = DocumentBuilderFactory.newInstance(); Document document = null; DocumentBuilder documentBuilder = documentFactory.newDocumentBuilder(); document = documentBuilder.parse(new File(“path/to/demo.xml”)); StringBuilder sb = new StringBuilder(); […]

SAX与XmlTextReader – C#中的SAX

我正在尝试阅读一个大型XML文档,我希望以块的forms与XmlDocument将整个文件读入内存的方式进行。 我知道我可以使用XmlTextReader来做到这一点,但我想知道是否有人使用过SAX for .NET? 我知道Java开发人员发誓它,我想知道是否值得试一试,如果是这样,使用它有什么好处。 我正在寻找细节。

localname和qname有什么区别?

当使用SAX解析Java中的XML文件时,SAX方法中的参数localname和qname之间的区别是什么,例如startElement(String uri, String localName,String qName, Attributes attributes) ?

Sax解析和编码

我有一个在解析RSS和Atom文件时遇到SAX问题的联系人。 根据他的说法,就好像来自Item元素的文本被截断为撇号或有时是重音字符。 编码似乎也存在问题。 我已经尝试过SAX了,我也有一些截断,但是还没有进一步挖掘。 如果有人在此之前解决了这个问题,我会很感激。 这是在ContentHandler中使用的代码: public void characters( char[], int start, int end ) throws SAXException { // link = new String(ch, start, end); 编辑:编码问题可能是由于将信息存储在字节数组中,因为我知道Java在Unicode中工作。

解析没有根元素的XML流

我需要解析连续的格式良好的XML元素,我只给它一个已经构造的java.io.Reader对象。 这些元素没有包含在根元素中,也没有像”这样的XML标头前缀,但它们是有效的XML。 使用Java org.xml.sax.XMLReader类不起作用,因为XML Reader期望从封闭的根元素开始解析格式良好的XML。 因此,它只读取流中的第一个元素,它将其视为根,并在下一个元素中失败,典型的 org.xml.sax.SAXParseException:根元素后面的文档中的标记必须格式正确。 对于不包含根元素的文件,但是这样的元素确实存在或者可以定义(并且被称为MyRootElement),可以执行以下操作: Strint path = ; XMLReader xmlReader = SAXParserFactory.newInstance().newSAXParser().getXMLReader(); StringBuilder buffer = new StringBuilder(); buffer.append(“\n”); buffer.append(“<!DOCTYPE MyRootElement "); buffer.append("[]>\n”); buffer.append(“\n”); buffer.append(“&data;\n”); buffer.append(“\n”); InputSource source = new InputSource(new StringReader(buffer.toString())); xmlReader.parse(source); 我已经通过将部分java.io.Reader输出保存到文件来测试上述内容并且它可以工作。 但是,这种方法在我的情况下不适用,并且无法插入此类额外信息(XML标头,根元素),因为已经构造了传递给我的代码的java.io.Reader对象。 基本上,我正在寻找“碎片式XML解析”。 所以,我的问题是,可以使用标准Java API(包括org.sax.xml.*和java.xml.*包)来完成吗?

getChildNodes给出了意想不到的结果

我的XML看起来像这样 – ValueGoesHere 我正在使用以下代码处理它 – Document dom = parser.getDocument(); NodeList collected_objects = dom.getElementsByTagName(“object”); System.out.println(“Number of collected objects are ” + collected_objects.getLength()); for (int i = 0; i < collected_objects.getLength(); i++) { Node aNode = collected_objects.item(i); //get children of "objects" NodeList refNodes = aNode.getChildNodes(); System.out.println("# of chidren are " + refNodes.getLength()); //print attributes of "objects" NamedNodeMap […]

治愈“字符串” – “评论中不允许”。 例外?

我正在使用Java 6.我在我的pom中有这种依赖… xerces xercesImpl 2.10.0 我正在尝试使用此行解析XHTML文档 使用此代码…… DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setValidating(false); factory.setExpandEntityReferences(false); factory.setFeature(“http://apache.org/xml/features/nonvalidating/load-external-dtd”, false); final DocumentBuilder builder = factory.newDocumentBuilder(); final InputSource s = new InputSource(new StringReader(str)); org.w3c.dom.Document result = builder.parse(s); 但我的解析因以下exception而死亡…… [Fatal Error] :91:947: The string “–” is not permitted within comments. org.xml.sax.SAXParseException: The string “–” is not permitted within comments. at org.apache.xerces.parsers.DOMParser.parse(Unknown Source) […]

如何在Java中解析大(50 GB)XML文件

目前我试图使用SAX Parser,但是大约3/4通过文件它只是完全冻结,我已经尝试分配更多的内存等但没有得到任何改进。 有什么方法可以加快速度吗? 一个更好的方法? 将它剥离到裸骨,所以我现在有以下代码,当在命令行中运行时,它仍然没有我想要的那么快。 使用“java -Xms-4096m -Xmx8192m -jar reader.jar”运行它我得到的GC开销限制超出了文章700000 主要: public class Read { public static void main(String[] args) { pages = XMLManager.getPages(); } } XMLManager public class XMLManager { public static ArrayList getPages() { ArrayList pages = null; SAXParserFactory factory = SAXParserFactory.newInstance(); try { SAXParser parser = factory.newSAXParser(); File file = new File(“..\\enwiki-20140811-pages-articles.xml”); […]

SAX解析器:忽略特殊字符

我正在使用Xerces来解析我的xml文档。 问题是xml转义了像’&nbsp;’这样的字符 在characters()方法中显示为非转义的。 我需要按原样在characters()方法中获取转义字符。 谢谢。 UPD:试图在我的DefaultHandler的后代中覆盖resolveEntity方法。 从调试中可以看出它被设置为xml阅读器的实体解析器,但是没有调用来自重写方法的代码。

使用sax解析器解析和修改xml字符串

我有一个XML文件,我需要在其中搜索特定的标签并更新它的值。 问题是,使用Sax解析器是“必须”。 我必须通过使用Sax Parser“only”找到这些标签,dom stax j4dom dom4j解析器不在考虑范围内。 我可以通过将我的xml文件转换为字符串并使用sax解析器解析它并通过StringBuilder对象追加新值来完成此任务吗? 会没事吗? 或者你会推荐什么?