当前位置: 首页 > 知识库问答 >
问题:

如何在java中从xsd appinfo元素中提取内容

濮宇定
2023-03-14

我有一个带有注释元素的xsd,这些元素又包含appinfo元素。我正在使用appinfo元素传递一些有关架构的自定义信息,并且在遍历元素时需要提取appinfo的内容。

xsd中的代码段。

<xsd:element name = "Entity">
                <xsd:annotation>
                    <xsd:appinfo>EntityReference</xsd:appinfo>
                </xsd:annotation>
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element
                            minOccurs = "0"
                            name = "Id"
                            type = "tns:guid"/>
                        <xsd:element
                            minOccurs = "0"
                            name = "LogicalName"
                            nillable = "true"
                            type = "xsd:string"/>
                        <xsd:element
                            minOccurs = "0"
                            name = "Name"
                            nillable = "true"
                            type = "xsd:string"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>

这是我用来从注释中提取应用程序信息的代码。

SchemaAnnotation annotation = element.getAnnotation();
                            if(annotation!=null){
                                XmlObject[] ai = annotation.getApplicationInformation();
                                for(XmlObject obj : ai){
                                    if(obj!=null){
                                        //System.out.println(obj.toString());
                                        obj.getDomNode().getNodeValue();
                                    }
                                }
                            }

但我得到一个空值。obj。但是,toString()返回

<xml-fragment xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:request="http://ns1" xmlns:tns="http://ns2">EntityReference</xml-fragment>

如何从appinfo获取内容“EntityReference”?我是否应该编写一个自定义处理程序来解析字符串内容?

谢谢

共有1个答案

欧阳晗日
2023-03-14
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();

                                        Document document = builder.parse(new ByteArrayInputStream(obj.toString().getBytes()));
                                        NodeList list = document.getChildNodes();
                                        Node node = list.item(0); 

                                        if (node.getFirstChild() != null
                                                && node.getFirstChild().getNodeType() == Node.TEXT_NODE) {
                                            //Text tn = (Text) node.getFirstChild();

                                            System.out.println(node.getFirstChild().getTextContent());
                                        }
 类似资料:
  • 比起Ruby、Capybara和SitePrism,我更熟悉Java和Selenium,所以如果这个问题太多,我深表歉意。 Selenium有一个非常有用的类来管理Select标签,Selenium::WebDriver::Support::Select,它可以通过传递代表select的Selenium Element(Selenium::WebDriver::Element)来创建。我想得到一个

  • 问题内容: 我有以下类型的数据框 我希望我的输出遵循以下类型 我的col4是一个数组,我想将其转换为单独的列。需要做什么? 我看到了很多关于flatmap的答案,但是它们正在增加一行,我只想将元组放在另一列中但在同一行中 以下是我的实际架构: 也可以请一些人帮我解释一下数据帧和RDD 问题答案: 创建样本数据: 用于从数组列中提取元素,按实际情况替换为:

  • 问题内容: 如果您在python中有一个列表,并且想要将索引1、2和5的元素提取到新列表中,您将如何做? 这是我的做法,但我并不十分满意: 有没有更好的办法? 更一般而言,给定一个索引元组,即使使用重复,您将如何使用该元组从列表中提取相应的元素(例如,元组产生)。 问题答案: 也许使用这个:

  • 我有一个JSON如下 有没有什么方法可以直接将“ID”的值提取到变量中,而不需要遍历根元素,即“Root1”。因为每次运行应用程序时根元素名称都会发生变化,比如“Root2”、“Root3”。 下面是我尝试使用“Root1”和“Result”元素提取ID的代码

  • 我正在尝试本地化元素的xpath,然后获取该元素的内容(这是一个文本,一个灰色字段),并将其与预期的字符串进行比较。 所以我准备了xpath: 当我试图获取这个元素的内容时,它不会返回任何东西。 我使用for是因为它是具有相同xpath的元素列表。 非常感谢。

  • 我正在尝试使用以下结构单击element: 但是,这将抛出。 我当前正在使用:刮取(父)元素列表。这标识了正确的元素列表(按预期工作)。有了列表后,我应用以下函数: 使用: 而且 但是,这将触发。 我对此进行了几个小时的研究,基于几个帖子,我添加了“。”在两个斜杠之前,这表示相对于父级(而不是相对于整个DOM)。 如果我移除这个点,我总是得到页面上的第一个元素--而不是列表中每个父元素的子元素。