test1.xml<?xml version="1.0" encoding="utf-8"?>
<entrySet xmlns="net:sf:psidev:mi"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="net:sf:psidev:mi http://psidev.sourceforge.net/mi/xml/src/MIF.xsd"
level="1" version="1">
<author name="James" location="UK">James Strachan</author>
<author name="Bob" location="US">Bob McWhirter</author>
</entrySet>test2.xml
<?xml version="1.0" encoding="utf-8"?>
<entrySet>
<author name="James" location="UK">James Strachan</author>
<author name="Bob" location="US">Bob McWhirter</author>
</entrySet>代码1
File f = new File("test1.xml");
SAXReader reader = new SAXReader();
Document doc = reader.read(f);
Element root = doc.getRootElement();
Node node = doc.selectSingleNode("/entrySet/author");
String id = node.valueOf("@id");
System.out.println(id);代码2
File f = new File("test2.xml");
SAXReader reader = new SAXReader();
Document doc = reader.read(f);
Element root = doc.getRootElement();
Node node = doc.selectSingleNode("/entrySet/author");
String id = node.valueOf("@id");
System.out.println(id);我的XML文件test1.xml的root节点entrySet后面的内容如果去掉test2.xml,我的程序就可以
如果和test1.xml那样,我就取不到author的id,
不知道为什么?帮忙指教,谢谢。。
<entrySet xmlns="net:sf:psidev:mi"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="net:sf:psidev:mi http://psidev.sourceforge.net/mi/xml/src/MIF.xsd"
level="1" version="1">
<author name="James" location="UK">James Strachan</author>
<author name="Bob" location="US">Bob McWhirter</author>
</entrySet>test2.xml
<?xml version="1.0" encoding="utf-8"?>
<entrySet>
<author name="James" location="UK">James Strachan</author>
<author name="Bob" location="US">Bob McWhirter</author>
</entrySet>代码1
File f = new File("test1.xml");
SAXReader reader = new SAXReader();
Document doc = reader.read(f);
Element root = doc.getRootElement();
Node node = doc.selectSingleNode("/entrySet/author");
String id = node.valueOf("@id");
System.out.println(id);代码2
File f = new File("test2.xml");
SAXReader reader = new SAXReader();
Document doc = reader.read(f);
Element root = doc.getRootElement();
Node node = doc.selectSingleNode("/entrySet/author");
String id = node.valueOf("@id");
System.out.println(id);我的XML文件test1.xml的root节点entrySet后面的内容如果去掉test2.xml,我的程序就可以
如果和test1.xml那样,我就取不到author的id,
不知道为什么?帮忙指教,谢谢。。
是这样代码1读test1.xml 不能读到内容代码2读test2.xml 可以读到内容两者的区别是test1.xml的entrySet标签后面有一串字符串,
有解决办法吗?我必须读test1。XML
Node node = doc.selectSingleNode("/entrySet/author");
这里你的entrySet有xmlns...
你查查吧.我理解的很浅.只是有这个想法...没怎么太搞过这个
<rdf:RDF xmlns:rdf="http://www.w3c.org/1999/02/22-synax-ns#"
xmlns:dc="http://purl.org/metadata/dublin-core#"
xmlns:dced="http://purl.org/metadata/dced-v1#">
<rdf:Description ID="0000000001">
<dc:title>aaa</title>
<dc:creator>bbb</creator>
<dc:suject>ccc</suject>
<dced:audience>ddd</audience>
<dced:level>3</level>
</rdf:Description>
</rdf:RDF>使用的 Java 代码如下:
private void generateDocument(String prm_filename){
org.dom4j.Document document = org.dom4j.DocumentHelper.createDocument();Element rootElement = document.addElement("rdf:RDF");rootElement.addAttribute("xmlns:rdf","http://www.w3c.org/1999/02/22-synax-ns#");
rootElement.addAttribute("xmlns:dc","http://purl.org/metadata/dublin-core#");
rootElement.addAttribute("xmlns:dced","http://purl.org/metadata/dced-v1#");Element rdfDescriptionElement = rootElement.addElement("rdf:Description");
rdfDescriptionElement.addAttribute("ID", "0000000001");Element titleElement = rdfDescriptionElement.addElement("dc:title");
titleElement.setText("bbb");Element creatorElement = rdfDescriptionElement.addElement("dc:creator");
creatorElement.setText("ccc");Element sujectElement = rdfDescriptionElement.addElement("dc:suject");
sujectElement.setText("ddd");Element audienceElement = rdfDescriptionElement.addElement("dced:audience");
audienceElement.setText("eee");Element levelElement = rdfDescriptionElement.addElement("dced:level");
levelElement.setText(3);try{
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter output = new XMLWriter(new FileWriter( new File(prm_filename)), format);
output.write( document );
output.close();
}catch(IOException e){
System.out.println(e.getMessage());
}
}
看看这个对你有帮助吗???
NameSpace ns1 = new NameSpace("xmlns:rdf","http://www.w3c.org/1999/02/22-synax-ns#");
NameSpace ns2 = new NameSpace("xmlns:dc","http://purl.org/metadata/dublin-core#");
NameSpace ns3 = new NameSpace("xmlns:dced","http://purl.org/metadata/dced-v1#");
rootElement.add(ns1);
rootElement.add(ns2);
rootElement.add(ns3);
可是这个entrySet后面的字符串会变的
我不清楚这个字符串的含义
我自己也找找资料,先
谢谢,可能是我写错了,应该是name属性
不是这个问题我的问题是:为什么有了命名空间,就不能读了