从xsd文件获取元素类型前缀

时间:2015-02-10 23:24:27

标签: c# xml xsd

我对解析xsd文件相当新,目前我必须从下面的元素中获取元素类型的前缀。

<xsd:element name="USAddress" 
             type="irs:USAddressType">
  <xsd:annotation>
    <xsd:documentation>
      <Description>United States Address</Description>
      <LineNumber>Line H(3)</LineNumber>
    </xsd:documentation>
  </xsd:annotation>
</xsd:element>

我想看看我能否获得价值&#34; irs​​&#34;来自type =&#34; irs​​:USAddressType&#34;在上面的元素中。

代码当前获取与此前缀关联的命名空间。

XmlSchemaElement.QualifiedName.Namespace为我提供了与前缀irs关联的命名空间,该命名空间已在xsd文件的顶部定义,如下所示

xmlns:irs="http://www.irs.gov/file"

如果有某些方法可以获得这个前缀&#34; irs​​&#34;那将会很棒。

1 个答案:

答案 0 :(得分:0)

这是我使用的(抱歉是在java中)

public static String findNSQualifier(Document dom){
    Element e = dom.getDocumentElement();
    String regex = "xmlns:([a-z]+)=\"" + XSD_NS + "\"";
    for(int i = 0; i < e.getAttributes().getLength(); i++){
        Node attr = e.getAttributes().item(i);
        Pattern p = Pattern.compile(regex);
        Matcher m = p.matcher(attr.toString());
        if(m.find())
            return m.group(1);
    }
    return null;
}