你的XML文件是怎么样的?
你的child1的那个tag是什么?
你的child1的那个tag是什么?
解决方案 »
- 关于ssh加载信息显示问题...
- java 发送QQ邮件问题
- 简单的ext
- 关于把从数据库中查询出来的数据打印出来的问题
- Hibernate可以自动提交事务么?
- 学习hibernate+struts遭遇NoClassDefFoundError,请大侠过来看看
- no session or session was closed谁可以帮忙解决(急)
- 一个sqlserver2000的查询问题在线等
- 五十分请问!Struts如何连接数据库?
- 为什么用EJB存取中文时都变成问号了?要怎么解决?高分!!!!
- 谁能说说什么是j2ee connnector?
- 难道就没有人用JBuilder5.0+BAS4.5写过ejb吗?请进(你想要多少分?)
<InspectionLevel level="S-1">C</InspectionLevel>
<InspectionLevel level="S-2">D</InspectionLevel>
<InspectionLevel level="S-3">F</InspectionLevel>
<InspectionLevel level="S-4">H</InspectionLevel>
<InspectionLevel level="I">K</InspectionLevel>
<InspectionLevel level="II">M</InspectionLevel>
<InspectionLevel level="III">N</InspectionLevel>
</LotSize>
这是其中一段,dom能找到InspectionLevel的Attr,却无法取得nodeValue.
import javax.xml.parsers.*;
import org.w3c.dom.*;public class test
{
public static void main(String[] args)
{
try{
DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
//factory.setValidating(true);
//factory.setNamespaceAware(false);
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse("g:\\table.xml"); Element element = doc.getDocumentElement();
System.out.println(element.getTagName());
NodeList listChild1=element.getChildNodes();
System.out.println(listChild1.getLength());
Element child1=(Element)((Element)(listChild1.item(1))).getChildNodes().item(1);
System.out.println(child1.getTagName());
System.out.println(child1.getAttribute("level"));
System.out.println(child1.getNodeValue()); }catch(Exception e)
{
e.printStackTrace();
} }
}
这是xml文件table.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Table>
<ROW size="3">
<COL level="S-1">A</COL>
<COL level="S-2">B</COL>
<COL level="S-3">C</COL>
</ROW>
</Table>
这是输出结果:
Table
3
COL
S-1
null为什么nodeValue总是null值呢?应该是A才对呀!为什么?
利用这个方法:child1.firstchild().getnodevalue()
应该可以了
因为child1.firstchild()取得child1的textnode子结点,在取textnode的值,试试
能给我讲讲原理吗?
马上给分!
ELEMENT_NODE,
TEXT_NODE,
ENTITY_NODE
...
的区别?
查api,Element并没有firstchild这个方法,而且firstchild不符合java的命名规则,肯定是不存在。只有Node里面有个getFirstChild方法,但是我试了,还是不行啊
请 cloudwon做详细解释
谢谢
谢谢
System.out.println(child1.getNodeValue());
改为:
System.out.println(child1.getFirstChild().getNodeValue());
就行了.
你可以看看xml的规范,xml中的节点(node)分为很多种,getnodevalue()和getnodename()这两个方法对于不同的节点类型(node的子类,如element、textnode等)执行效果是不同的。这些规范上应该都有。
对于上面的例子,要先获得child1的子结点,即它所包含着的文本结点(这种结构组织方法好想和我们直观想想的好想不太一样,呵呵),然后利用文本结点的getnodevalue()取得文本串。也就是说:比如:<a>b</a>,“b”并不是<a>节点的一部分,而是被看成一个文本结点,并且作为<a>的子结点。
意思大概是这样,表述不太好,函数名也记不大清楚了。呵呵
你看看
person.xml
<?xml version="1.0"?>
<person>
<name>
ZosaTapo
</name>
</person>
解析程序认为这个文档根元素(person)有3个子节点。
当然是两个文本节点(实际上就是我们<name>前和</name>后的回车换行符)
和一个我们真正想的节点(person).同时解析person的时候,name的值也包含回车换行符(你要是在unix下面可能有些不同的,请使用java定义的行分割符)。元素节点的值是空的,因为他的子节点文本节点才可以取值。下面我写一个简单的解析程序,还有一个xml文件。
xml文件:
<?xml version="1.0" standalone="yes"?>
<GREETING id="test">
<person>
Reic Yang
</person>
</GREETING>
java源代码:
import java.io.*;
import java.lang.*;
import javax.xml.parsers.*;
import org.xml.sax.*;
import org.w3c.dom.*;
class txml
{
private static final String FILE_PATH="txml.xml";
private Document doc=null;
private DocumentBuilder docb=null;
private DocumentBuilderFactory docbf=null;
private Element root=null;
public void loadDocument(String filename)
{
try
{
docbf=DocumentBuilderFactory.newInstance();
docb=docbf.newDocumentBuilder();
doc=docb.parse(new File(filename));
root=doc.getDocumentElement();
}
catch(ParserConfigurationException e){e.printStackTrace();}
catch(SAXException e){e.printStackTrace();}
catch(IOException e){e.printStackTrace();}
}
public void loadDocument()
{
loadDocument(FILE_PATH);
}
public Element getRoot()
{
return root;
}
public Document getDoc()
{
return doc;
}
public static void spaces(int depth)
{
//print prefix space to show level
for(int d=0;d<depth;d++)
{
System.out.print(" ");
}
//System.out.println();
}
public static void printTree(Node root,int depth)
{
System.out.println();
//print attributes
if(root.hasAttributes())
{
spaces(depth);
System.out.println("******Node Attributes List******");
NamedNodeMap namednodemap=root.getAttributes();
for(int a=0;a<namednodemap.getLength();a++)
{
spaces(depth);
System.out.println("Attribute Name: "+namednodemap.item(a).getNodeName()
+" Attribute Value: "+namednodemap.item(a).getNodeValue());
}
}
//print nodes
NodeList nodelist=root.getChildNodes();
spaces(depth);
System.out.println("******Node ChildNodes List******");
spaces(depth);
System.out.println("Nodes Total:"+nodelist.getLength());
for(int n=0;n<nodelist.getLength();n++)
{
Node node=nodelist.item(n);
spaces(depth);
System.out.print("Node Type :"+node.getNodeType());
System.out.print(" Node Name :"+node.getNodeName());
if(node.getNodeType()!=1)
{
System.out.print(" Node Value :"+node.getNodeValue());
}
System.out.println();
if(node.getNodeType()==1)
{
printTree(node,depth+1);
}
}
System.out.println();
}
public static void main(String args[])
{
txml t=new txml();
if(args.length!=1)
{
t.loadDocument();
}
else
{
t.loadDocument(args[0]);
}
Document doc=t.getDoc();
System.out.println(doc.getChildNodes().getLength());
Element root=t.getRoot();
System.out.println("+++++++++++++++++++++++++++++++++");
System.out.println("+ Node List Sample +");
System.out.println("+++++++++++++++++++++++++++++++++");
printTree(root,0);
}
}
请问下面是什么意思?
dim x as objectPrivate Sub CmdShow_Click()
Dim Rs As ador.Recordset
Dim X As Object
Dim temp As String
Dim Item As ListItem
On Error GoTo Handle
LvSegment.ListItems.Clear
Set X = CreateObject("support.staticdata")
If Not SHOWCHECK Then Exit Sub
Screen.MousePointer = 11
Set Rs = X.SELelet(Trim(text1.Text), Trim(Text2.Text), Trim(Text3.Text))
这是个查询按钮的源代码,该代码如何连接数据库的,RS是如何获得记录集
set Rs=x.select(trim(text1.text).....)中SET rs=x.select是什么意思呢?
Screen.MousePointer = 0
If Rs Is Nothing Then
LBLTIP.Caption = "数据库繁忙,请重试或与管理员联系"
GoTo Over
End If
If Rs.BOF And Rs.EOF Then
LBLTIP.Caption = "没找到您要查找的纪录,请重新输入"
GoTo Over
End If
' add new data on listview
Do While Not Rs.EOF
Set Item = LvSegment.ListItems.add(, , Trim("" & Rs!customerid))
Item.SubItems(1) = Trim("" & Rs!companyname)
Item.SubItems(2) = Trim("" & Rs!contacttitle)
Item.SubItems(3) = Format(Trim("" & Rs!birthdate), "YYYY-MM-DD")
Item.SubItems(4) = Format(Trim("" & Rs!city), "YYYY-MM-DD")
Item.SubItems(5) = Format(Trim("" & Rs!country), "0.00")
Rs.MoveNext
Loop CmdUPDATE.Enabled = True
CmdDEL.Enabled = True
CmdADD.Enabled = True
End IfOver:
Screen.MousePointer = 0
Exit Sub
Handle:
Screen.MousePointer = 0
MsgBox Err.Description, vbCritical, Me.Caption
GoTo Over
End Sub
请问下面是什么意思?
dim x as objectPrivate Sub CmdShow_Click()
Dim Rs As ador.Recordset
Dim X As Object
Dim temp As String
Dim Item As ListItem
On Error GoTo Handle
LvSegment.ListItems.Clear
Set X = CreateObject("support.staticdata")
If Not SHOWCHECK Then Exit Sub
Screen.MousePointer = 11
Set Rs = X.SELelet(Trim(text1.Text), Trim(Text2.Text), Trim(Text3.Text))
这是个查询按钮的源代码,该代码如何连接数据库的,RS是如何获得记录集
set Rs=x.select(trim(text1.text).....)中SET rs=x.select是什么意思呢?
定义dim x as object
set x=createobject("support.staticsupport")又是什么意思呢!急切!急切!
Screen.MousePointer = 0
If Rs Is Nothing Then
LBLTIP.Caption = "数据库繁忙,请重试或与管理员联系"
GoTo Over
End If
If Rs.BOF And Rs.EOF Then
LBLTIP.Caption = "没找到您要查找的纪录,请重新输入"
GoTo Over
End If
' add new data on listview
Do While Not Rs.EOF
Set Item = LvSegment.ListItems.add(, , Trim("" & Rs!customerid))
Item.SubItems(1) = Trim("" & Rs!companyname)
Item.SubItems(2) = Trim("" & Rs!contacttitle)
Item.SubItems(3) = Format(Trim("" & Rs!birthdate), "YYYY-MM-DD")
Item.SubItems(4) = Format(Trim("" & Rs!city), "YYYY-MM-DD")
Item.SubItems(5) = Format(Trim("" & Rs!country), "0.00")
Rs.MoveNext
Loop CmdUPDATE.Enabled = True
CmdDEL.Enabled = True
CmdADD.Enabled = True
End IfOver:
Screen.MousePointer = 0
Exit Sub
Handle:
Screen.MousePointer = 0
MsgBox Err.Description, vbCritical, Me.Caption
GoTo Over
End Sub
jdk1.4自带的是jaxp!