claimtext = rootgetElementsByTagName("claim-text")
for i in claimtext[0]childNodes:
print inodeName #你自己看哈 这里的 inodeName 有俩个类型 br #text ,所以取的时候加个类型判断吧
if inodeName == '#text':
print inodeValue
这玩意这么不好使 要不是 试试 beautifulsoup 这个html 解析标签 效果应该 嘎嘎的
dom4j中,使用Elementattributes方法可以获取到节点的属性,而使用elements则可以获取相应的子节点
比如:
Element root = docgetRootElement();
List attrList = rootattributes();
for (int i = 0; i < attrListsize(); i++) {
//属性的取得
Attribute item = (Attribute)attrListget(i);
Systemoutprintln(itemgetName() + "=" + itemgetValue());
}
List childList = rootelements();
for (int i = 0; i < childListsize(); i++) {
//子节点的 *** 作
Element it = (Element) childListget(i);
//对子节点进行其它 *** 作
}
import javaioFile;
import javautilList;
import orgdom4jAttribute;
import orgdom4jDocument;
import orgdom4jDocumentException;
import orgdom4jElement;
import orgdom4jNamespace;
import orgdom4jNode;
import orgdom4jVisitorSupport;
import orgdom4jioSAXReader;
public class XmlTest {
public static void main(String[] args) {
SAXReader reader = new SAXReader();
readersetEncoding("ISO-8859-1");
Document doc = null;
try {
File file = new File("testxml");
doc = readerread(file);
// docaccept(new MyVisitor());//访问者模式遍历xml
printElement(docgetRootElement());
}
catch (DocumentException e) {
eprintStackTrace();
}
}
public static void printElement(Element element) {
String elementPrefix = elementgetNamespacePrefix();// 元素前缀
elementPrefix = elementPrefixequals("") "" : elementPrefix + ":";
Systemoutprint("<" + elementPrefix + elementgetName());
for (int i = 0; i < elementnodeCount(); i++) {// 查找命名空间
Node node = elementnode(i);
if (nodegetNodeType() == NodeNAMESPACE_NODE) {
Namespace nspace = (Namespace) node;
Systemoutprint(" xmlns:" + nspacegetPrefix() + "=\"" + nspacegetURI() + "\"");
}
}
for (int j = 0; j < elementattributeCount(); j++) {// 查找属性
Attribute attr = elementattribute(j);
String attrPrefix = attrgetNamespacePrefix();// 属性前缀
attrPrefix = attrPrefixequals("") "" : attrPrefix + ":";
Systemoutprint(" " + attrPrefix + attrgetName() + "=\"" + attrgetStringValue() + "\"");
}
Systemoutprintln(">");
List<Element> childElements = elementelements();
if (childElementssize() == 0) {// 如果元素下面没有子元素,输出此元素文本内容
String text = elementgetTextTrim();
if (!textequals("")) {
Systemoutprintln(elementgetTextTrim());
}
}
else {
for (Element childElement : childElements) {// 遍历子元素
printElement(childElement);
}
}
Systemoutprintln("</" + elementPrefix + elementgetName() + ">");
}
}
class MyVisitor extends VisitorSupport {// 访问者模式遍历xml
@Override
public void visit(Element node) {
Systemoutprintln("元素:" + nodegetName());
Systemoutprint((nodeelements()size() == 0 "文本:" + nodegetTextTrim() + "\n" : ""));
}
@Override
public void visit(Attribute node) {
String prefix = nodegetNamespacePrefix();
prefix = prefixequals("") "" : (prefix + ":");
Systemoutprintln("属性:" + prefix + nodegetName() + "=" + nodegetText());
}
@Override
public void visit(Namespace namespace) {
Systemoutprintln("命名空间:xmlns:" + namespacegetPrefix() + "=" + namespacegetURI());
}
}
好了,就这么多,两个方式,自己写循环遍历或者用访问者模式遍历。
其实下载个dom4j源代码看看就知道了。
给你个函数,传Node,属性名进去获取属性值,兼容所有浏览器:
function getAttributeValue (xmlNode,attrName){
if(!xmlNode)return "" ;
if(!xmlNodeattributes) return "" ;
if(xmlNodeattributes[attrName]!=null) return xmlNodeattributes[attrName]value ;
if(xmlNodeattributesgetNamedItem(attrName)!=null) return xmlNodeattributesgetNamedItem(attrName)value ;
return "" ;
}
获取 p1 的值,就是 getAttributeValue(p,"p1") ;
以上就是关于python解析xml文件如何读取所有<br />标签的内容全部的内容,包括:python解析xml文件如何读取所有<br />标签的内容、java中dom4j解析xml文件怎么获取节点属性、谁能用java的dom4j解析出一下xml文件中的每个字段!!!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)