嵌套XML名称空间的正确方法是什么?
我必须这样做:
<?xml version="1.0"?>
<top xmlns="http://url1" xmlns:b="http://url2">
<b:second>
</b:second>
</top>
或者是以下确定
<?xml version="1.0"?>
<top xmlns="http://url1">
<b:second xmlns:b="http://url2">
</b:second>
</top>
另外,将第二级设置为默认值是否可以?例如:
<?xml version="1.0"?>
<a:top xmlns:a="http://url1">
<second xmlns="http://url2">
</second>
</a:top>
是否应将第二级声明为在第一级命名空间中?
<?xml version="1.0"?>
<a:top xmlns:a="http://url1">
<a:second xmlns="http://url2">
<third>text</third>
</a:second>
</a:top>
答案 0 :(得分:0)
所有这些都是&#34;好的&#34;只要名称空间继承规则为您提供了您想要的结果。
检查的一个好方法是将其传递给一个解析器,该解析器告诉您每个元素所在的命名空间。有许多方法可以为该cat设置外观。这是一个简单的java程序:
-CAfile
如果您使用的是Linux,则以下是一个稍微冗长的等价物:
import java.io.*;
import javax.xml.parsers.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
public class Parse
{
public static void main(String[] args)
{
try {
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setNamespaceAware(true);
SAXParser parser = factory.newSAXParser();
parser.parse(new File(args[0]), new Handler());
} catch (Exception e) {
e.printStackTrace();
}
}
static class Handler extends DefaultHandler
{
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
System.out.println("qName="+qName+" uri="+uri);
}
}
}