Val*_*ane 1 java xml xsd xml-parsing java-8
有什么方法可以避免在 DOM 中保留空格(无论是哪个 java 库)?
我有一个由 XSD 架构验证的 XML 文件。通过这种模式,只有<text>元素包含文本。另一个元素仅包含元素节点。当我编辑 XML 文件时,对于大多数可见性,我有几种类型的空格,如制表符、空白、回车符、...
如何在不保留所有未经架构授权的空格的情况下解析我的 XML(没有 xslt,只有 java 库)?
https://docs.oracle.com/javase/7/docs/api/javax/xml/parsers/DocumentBuilderFactory.html#setIgnoringElementContentWhitespace(boolean)建议有一个设置“要求解析器处于验证模式”( https ://docs.oracle.com/javase/7/docs/api/javax/xml/parsers/DocumentBuilderFactory.html#setSchema(javax.xml.validation.Schema)),然后支持忽略仅元素内容模型中的空白.
这是一个示例,给出了 Java 代码
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
dbf.setIgnoringElementContentWhitespace(true);
Schema schema = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI).newSchema(new File("schema1.xsd"));
//dbf.setSchema(schema);
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse("file1.xml");
System.out.println(doc.getDocumentElement().getChildNodes().getLength());
Run Code Online (Sandbox Code Playgroud)
带有示例文件
<root>
<item>a</item>
<item>b</item>
</root>
Run Code Online (Sandbox Code Playgroud)
子节点输出的数量是 5,现在当我从
dbf.setSchema(schema);
Run Code Online (Sandbox Code Playgroud)
并有一个模式定义root元素,例如元素的内容
<xs:schema version="1.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="root">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:element name="item" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)
子节点的输出仅为 2。
| 归档时间: |
|
| 查看次数: |
1746 次 |
| 最近记录: |