aa.xml
<?xml version="1.0" encoding="GB2312" ?>
<class>
<学生 id="001">
<姓名>王五</姓名>
<身高>1.7</身高>
</学生> <学生 id="002">
<姓名>李四</姓名>
<身高>1.4</身高>
</学生>
</class> ReadXml.java
import java.io.File; import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList; public class ReadXml
{
public static void main(String[] args)
{
try
{
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document document = builder.parse(new File("aa.xml")); Element rootElement = document.getDocumentElement();
NodeList list = rootElement.getElementsByTagName("学生");
Element element = (Element)list.item(0);
System.out.println(element.getChildNodes().item(0).getNodeValue());
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
}
执行到Document document = builder.parse(new File("aa.xml"));时就出错了,请大家帮忙!!!错误:
org.xml.sax.SAXParseException: "<?" で始まるコンテンツは、正当なマークアップではありません。文字 "?" (&#fffd;) は英字のはずです。
at org.apache.crimson.parser.Parser2.fatal(Parser2.java:3376)
at org.apache.crimson.parser.Parser2.fatal(Parser2.java:3370)
at org.apache.crimson.parser.Parser2.content(Parser2.java:1994)
at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1691)
at org.apache.crimson.parser.Parser2.parseInternal(Parser2.java:667)
at org.apache.crimson.parser.Parser2.parse(Parser2.java:337)
at org.apache.crimson.parser.XMLReaderImpl.parse(XMLReaderImpl.java:448)
at org.apache.crimson.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:185)
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:151)
at ReadXml.main(ReadXml.java:17)
<?xml version="1.0" encoding="GB2312" ?>
<class>
<学生 id="001">
<姓名>王五</姓名>
<身高>1.7</身高>
</学生> <学生 id="002">
<姓名>李四</姓名>
<身高>1.4</身高>
</学生>
</class> ReadXml.java
import java.io.File; import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList; public class ReadXml
{
public static void main(String[] args)
{
try
{
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document document = builder.parse(new File("aa.xml")); Element rootElement = document.getDocumentElement();
NodeList list = rootElement.getElementsByTagName("学生");
Element element = (Element)list.item(0);
System.out.println(element.getChildNodes().item(0).getNodeValue());
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
}
执行到Document document = builder.parse(new File("aa.xml"));时就出错了,请大家帮忙!!!错误:
org.xml.sax.SAXParseException: "<?" で始まるコンテンツは、正当なマークアップではありません。文字 "?" (&#fffd;) は英字のはずです。
at org.apache.crimson.parser.Parser2.fatal(Parser2.java:3376)
at org.apache.crimson.parser.Parser2.fatal(Parser2.java:3370)
at org.apache.crimson.parser.Parser2.content(Parser2.java:1994)
at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1691)
at org.apache.crimson.parser.Parser2.parseInternal(Parser2.java:667)
at org.apache.crimson.parser.Parser2.parse(Parser2.java:337)
at org.apache.crimson.parser.XMLReaderImpl.parse(XMLReaderImpl.java:448)
at org.apache.crimson.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:185)
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:151)
at ReadXml.main(ReadXml.java:17)
用dom4j可以支持中文的
element.getChildNodes().item(0).getNodeValue()
觉得还得深一层。
TextNode node = element.getChildNodes().item(0).getChildNodes().item(0);
node.getNodeValue() 应该才是吧?
节点换成英文