xml 相关问题

可扩展标记语言(XML)是一种灵活的结构化文档格式,用于定义人类和机器可读的编码规则。

尝试对按父元素名称和索引值过滤的命名 XML 元素进行计数

我一直在设法在 VB.net 中操作 XML,但我遇到了一个我一直在努力解决的问题,所以我正在寻求一些指导?! 通过这个 XML 示例... 我一直在设法在 VB.net 中操作 XML,但我遇到了一个我真的很难解决的问题,所以我想寻求一些指导?! 使用此示例 XML... <?xml version="1.0" encoding="utf-8"?> <dataset> <packages> <package index="1"> <desc>First Package</desc> <rmabool>1</rmabool> <rmaref>RMACASE1</rmaref> <bootfiles>1</bootfiles> <image>1</image> <driver>3</driver> <driver>4</driver> </package> <package index="2"> <desc>Second Package</desc> <bootfiles>2</bootfiles> <image>2</image> <driver>3</driver> </package> <package index="3"> <desc>Third Package</desc> <bootfiles>3</bootfiles> <image>2</image> <driver>3</driver> </package> </packages> </dataset> ...我想计算索引匹配“1”的名为“package”的元素中包含有多少个名为“driver”的元素。我期望返回的结果是“2”,或者如果我更改搜索以匹配索引与“3”,那么我期望结果是“1”。 在其他地方,我有一个简单的子程序,它返回仅与名称匹配的元素计数,下面是我修改它的努力,但我无法让它工作...... Public Function CountElementDescendents(ByVal CFGFile As String,_ 'Path to Config.xml ByVal Parent As String,_ 'Name of element to search descendents eg. 'package' ByVal ParentIndex As String,_ 'Index value of element to search descendents eg. '1' ByVal ElementCount As String_ 'Name of descendent elements to count 'eg. 'driver' ) As Integer 'Return number of matching elements eg. '2' Dim ReturnValue As Integer = 0 Dim Xe As XElement Xe = XElement.Load(CFGFile) Dim Query As IEnumerable(Of XElement) = Xe.Elements(Parent).Attribute("index="&ParentIndex).Descendants(ElementCount) ReturnValue = Query.Count() CountElementDescendents = ReturnValue End Function 我不确定这是否可行,或者即使我已经采取了构建 XML 的最佳方法,有人可以提供一些帮助或建议吗?谢谢! 感谢@dbasnett 和@Craig 的帮助,你们太棒了!我会将其标记为已回答。 尝试一下。 LINQ 查询检查所有驱动程序元素并选择其父级是索引为 1 的包的元素。 'for testing use XML literal Dim xe As XElement xe = <dataset> <packages> <package index="1"> <desc>First Package</desc> <rmabool>1</rmabool> <rmaref>RMACASE1</rmaref> <bootfiles>1</bootfiles> <image>1</image> <driver>3</driver> <driver>4</driver> </package> <package index="2"> <desc>Second Package</desc> <bootfiles>2</bootfiles> <image>2</image> <driver>3</driver> </package> <package index="3"> <desc>Third Package</desc> <bootfiles>3</bootfiles> <image>2</image> <driver>3</driver> </package> </packages> </dataset> ' I would like to count how many elements, named 'driver', ' are contained in an element named 'package' with an index matching "1". ' Dim ie As IEnumerable(Of XElement) ie = From el In xe...<driver> Where el.Parent.Name.LocalName = "package" AndAlso el.Parent.@index = "1" Select el 编辑:作为函数 Private Function Srch(ElementToSearch As XElement, ParentName As String, ParentIndex As String) As IEnumerable(Of XElement) Dim ie As IEnumerable(Of XElement) ie = From el In ElementToSearch...<driver> Where el.Parent.Name.LocalName = ParentName AndAlso el.Parent.@index = ParentIndex Select el Return ie End Function 编辑2 - 更新功能 Private Function Srch(ElementToSearch As XElement, FindThis As String, ParentName As String, ParentIndex As String) As IEnumerable(Of XElement) Dim ie As IEnumerable(Of XElement) ie = From el In ElementToSearch.Descendants(FindThis) Where el.Parent.Name.LocalName = ParentName AndAlso el.Parent.@index = ParentIndex Select el Return ie End Function 测试 Dim rslts As IEnumerable(Of XElement) rslts = Srch(xe, "bootfiles", "package", "1")

回答 1 投票 0

Java无法解析符号xsd文件

我有以下 .xsd 文件: 我有以下 .xsd 文件: <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://soapexercise.plonca.sri.pja.edu/employees" targetNameSpace="http://soapexercise.plonca.sri.pja.edu/employees" elementFormDefault="qualified"> <xs:complexType name="employeeDto"> <xs:sequence> <xs:element name="id" type="xs:decimal" minOccurs="0"/> <xs:element name="firstName" type="xs:string"/> <xs:element name="lastName" type="xs:string"/> <xs:element name="birthDate" type="xs:date"/> <xs:element name="job" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:element name="getEmployeesResponse"> <xs:complexType> <xs:sequence> <xs:element name="employees" type="tns:employeeDto" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> IntelliJ 说tns:employeeDto 无法解析。如果我尝试在文件上运行 jaxb2:xjc 插件,我会得到以下堆栈跟踪:(此处有完整日志) org.xml.sax.SAXParseException: s4s-att-not-allowed: Attribute 'targetNameSpace' cannot appear in element 'schema'. at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException (ErrorHandlerWrapper.java:204) at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error (ErrorHandlerWrapper.java:135) at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError (XMLErrorReporter.java:396) at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.reportSchemaErr (XSDHandler.java:4253) at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.reportSchemaError (XSDHandler.java:4236) at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSAttributeChecker.reportSchemaError (XSAttributeChecker.java:1573) at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSAttributeChecker.checkAttributes (XSAttributeChecker.java:1105) at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSAttributeChecker.checkAttributes (XSAttributeChecker.java:960) at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDocumentInfo.<init> (XSDocumentInfo.java:106) at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.constructTrees (XSDHandler.java:823) at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.parseSchema (XSDHandler.java:652) at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadSchema (XMLSchemaLoader.java:617) at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadGrammar (XMLSchemaLoader.java:576) at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadGrammar (XMLSchemaLoader.java:542) at com.sun.org.apache.xerces.internal.jaxp.validation.XMLSchemaFactory.newSchema (XMLSchemaFactory.java:276) at com.sun.tools.xjc.reader.xmlschema.parser.SchemaConstraintChecker.check (SchemaConstraintChecker.java:81) at com.sun.tools.xjc.ModelLoader.loadXMLSchema (ModelLoader.java:301) at com.sun.tools.xjc.ModelLoader.load (ModelLoader.java:121) at com.sun.tools.xjc.ModelLoader.load (ModelLoader.java:76) at com.sun.tools.xjc.Driver.run (Driver.java:324) at org.codehaus.mojo.jaxb2.javageneration.AbstractJavaGeneratorMojo.performExecution (AbstractJavaGeneratorMojo.java:475) at org.codehaus.mojo.jaxb2.AbstractJaxbMojo.execute (AbstractJaxbMojo.java:337) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137) at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210) at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156) at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81) at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128) at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305) at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192) at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105) at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957) at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289) at org.apache.maven.cli.MavenCli.main (MavenCli.java:193) at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke (Method.java:566) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282) at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406) at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347) at org.codehaus.classworlds.Launcher.main (Launcher.java:47) 我该怎么做才能解决tns:employeeDto? targetNameSpace 应该是targetNamespace。属性大小写错误,无效。 https://www.w3.org/TR/xmlschema-1/#Schema_details

回答 1 投票 0

使用 serde-xml-rs 反序列化以获得具有任意属性的奇怪标签

嘿嘿。假设我有以下 XML: <_flow-tags_

回答 1 投票 0

android api 资源限定符 - 如何做范围?

我需要根据设备上android的API级别设置不同的菜单选项。具体来说,对于 API 10 - 15,我需要一个特定的菜单,对于 API 16 及更高版本,我需要另一个菜单。我的

回答 2 投票 0

无法在操作栏中设置 Android 导航抽屉

我正在尝试使用操作栏设置 Android 导航抽屉。我在设置导航抽屉的图标和生成所有列表项时遇到困难。下面是我的代码,我现在...

回答 1 投票 0

使用 serde_xml 反序列化以获得具有任意属性的奇怪标签

嘿嘿。假设我有以下 XML: <_flow-tags_

回答 1 投票 0

PHP:将 HTML 转换为 XML,以便 Word 作为文档读取

我们目前有一个自制的 PHP 类,可以使用 mhtml 将 HTML 字符串转换为 .doc 文件。这工作正常,但我们的客户希望能够导出到 .docx 而不是 .doc,这会...

回答 1 投票 0

如何在Spark SQL中解析XML?

尝试解析spark sql 2.3.0存储的xml列。 Xml 字符串如下所示: 123 ...

回答 1 投票 0

机器人框架output.xml文件中不存在starttime和endtime

我尝试使用TestArchiver(TestArchiver)将Robot Framework的测试结果解析到postgres,但出现以下错误: 解析:'output.xml' 回溯(最近一次调用最后一次): 文件“/

回答 1 投票 0

创建系统标识符并将其传递给 PostgreSQL 中的函数

我的主要目标是仅在 xml 元素不为空时创建/输出它。如果为空,则应返回 NULL。我为此使用本机 xmlelement() 函数。因此,如果我调用 SELECT xmlelemen...

回答 1 投票 0

XML - 如何获取单个节点而不是整个文档中的子节点?

一直在寻找答案,但找不到任何东西 - 我很新,所以也许我没有找到正确的关键词? 这是我正在使用的 XML 示例 一直在寻找答案,但找不到任何东西 - 我很新,所以也许我没有找到正确的关键词? 这是我正在使用的 XML 示例 <database> <book> <title>A</title> <author> <name>1</name> </author> </book> <book> <title>B</title> <author> <name>2</name> </author> <author> <name>3</name> </author> <author> <name>4</name> </author> <author> <name>5</name> </author> </book> </database> 我正在尝试使用 C# XmlDocument 获取书 A 作者 1,然后获取书 B 作者 2、3、4、5 到目前为止,我正在使用的代码正在循环遍历所有作者,因此我得到了书 A 作者 1, 2, 3, 4, 5 我目前的代码大致如下 XmlDocument doc = new XmlDocument(); doc.Load("myxmlfile"); XmlNode root = doc.SelectSingleNode("database"); XmlNodeList nodelist = root.SelectNodes("book"); foreach (XmlNode n in nodelist) { XmlNodeList authors = root.SelectNodes(".//author"); book.authorstring = ""; foreach (XmlNode author in authors) { book.authorstring = book.authorstring+author.SelectSingleNode("name").InnerText + ", "; } } 我读到了一些内容,如果我在“//”之前使用“.”,它将“锚定”到当前节点,但它似乎不起作用并且正在循环所有节点 我做错了什么或遗漏了什么? 如果我理解正确,你的错误就在这一行: XmlNodeList authors = root.SelectNodes(".//author"); 应该是 XmlNodeList authors = n.SelectNodes(".//author"); 对于未来的读者,我看到这篇文章,但我忘记在我的 xPath 中添加 .。 即(这是 powershell,但这并不重要), 这是错误的,返回了从根节点找到的第一个节点: $descriptionNode = $someNode.SelectSingleNode("//Description") 这是正确的,并返回第一个节点作为该节点的子节点: $descriptionNode = $someNode.SelectSingleNode(".//Description") 这当然是因为//会在任何地方查询,而./会相对查询。 解释得很清楚,但是很容易错过,而且花了一些时间才找到。 方便的备忘单: https://devhints.io/xpath 使用linq2XML..使用起来很简单 XElement doc=XElement.Load("yourXML.xml"); var lstBooks=doc.Descendants("book").Select(x=> new { name=x.Element("title").Value, authors=x.Elements("author").Select(y=>y.Element("name").Value) } ); lstBooks现在包含所有必需的数据 您现在可以这样做 foreach(var book in lstBooks) { book.name;//Name of the book foreach(var author in book) { author;//name of the author } }

回答 3 投票 0

如何在android studio(java)中自定义进度条并根据进度改变颜色?让它看起来像我的描述

我正在构建一个用于照顾虚拟动物的应用程序,并希望通过使用进度条向用户指示它有多饱/有多饿。 我希望进度条是水平的,并带有褐色...

回答 1 投票 0

将 B-Col 内的表格设为列的大小。 (Vue-Bootstrap)

我的 Vue 组件中有这个 < 我的 Vue 组件中有这个 <b-modal ...> <b-row> <b-col sm="12"> <table > <tr v-for=... :key="key"> <td><strong>{{ key }}: </strong></td> <td> {{ item }} </td> </tr> </table> </b-col> </b-row> .... 如果一个项目很长,那么表格就比b-col大 如何强制表格与 b-col 大小相同。 我不想只躲起来 overflow: hidden; 因为桌子还是太大了,只是隐藏了。 如果没有你的CSS,很难知道,但你可以做到这一点的一种方法是将你的table设置为使用table-layout: fixed。 您可以获得精美且溢出的文本。像下面这样的东西会让你的表格单元看起来很漂亮: td { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }

回答 1 投票 0

如何在 PowerShell 中获取转义的 xml 属性值而不进行转义

给出以下 xml: 一些文字 我需要获取 bar 属性的值而不对其进行转义。到目前为止我在 PowerS 中尝试过的每一种方法...

回答 4 投票 0

从 XML 创建 HTML 表单

我有许多不同的 xml 文件,需要从 html 表单进行编辑。我希望动态生成表单(文件可以是任何有效的 xml 结构)并且我想保存修改后的 xml

回答 2 投票 0

根据多个兄弟条件选择兄弟节点值,不使用xpath字符串

使用 xpath 查找 xml 节点有多种答案,如下所示。在使用 lxml 的 python 中,是否有更 Pythonic 的方式来构建这个条件列表?我知道我可以使用...构建 xpath 字符串

回答 1 投票 0

Oracle SQL 中的 REGEXP_COUNT 缓冲区太小

我有以下SQL: 与 q1 ( Tdata,Key) AS ( SELECT (XMLtype(pint.transportdata, nls_charset_id('AL32UTF8'))) , PINT.付款交换键 来自 bph_owner. paymentinterc...

回答 2 投票 0

优化查询 - PostgreSQL - XPATH

我的查询(PostgreSQL)可以正常工作。 将 xml_test 作为 ( 选择 ' 我的查询(PostgreSQL)可以正常工作。 with xml_test as ( select '<!--Build-Version: 1.564-REVb37dd024a8-20220530T1418--><tns:Message xsi:schemaLocation="https://appprod.be/Trivia/documents/Docs/XSDs/v1/T013 T013_v1.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="https://appprod.be/Trivia/documents/Docs/XSDs/v1/T013"> <Header> <Agent>90015299</Agent> <SocialFund>299</SocialFund> <MessageId>T013</MessageId> <Timestamp RequestDate="2022-06-16T23:20:00" ProcessDate="2022-06-16T23:25:20" ResponseDate="2022-06-16T23:25:20"/> <Reference NRK="6e6806740a6ea06d7ca6ae7b31edeb8e" Requestor="90010299"/> <Result>OK</Result> <ReturnCode>ResponseOnly</ReturnCode> </Header> <Body> <Request> <TransmissionMethod>BULK</TransmissionMethod> <SocialFundCode>299</SocialFundCode> <FileNumber>9913894</FileNumber> <FiscalYear>2020</FiscalYear> <FiscalHouseHolds> <FiscalHouseHold> <Beneficiary>66090999038</Beneficiary> <FiscalPartners> <FiscalPartner>65120999956</FiscalPartner> </FiscalPartners> </FiscalHouseHold> <FiscalHouseHold> <Beneficiary>66090999038</Beneficiary> <FiscalPartners> <FiscalPartner>65120999956</FiscalPartner> <FiscalPartner>94013099924</FiscalPartner> </FiscalPartners> </FiscalHouseHold> </FiscalHouseHolds> </Request> </Body> </tns:Message>' as x ) select file_number , (xpath('//Beneficiary/text()', fiscal_household::xml))[1]::text benef , array_to_string( (xpath('//FiscalPartner/text()', fiscal_household::xml)), ' - ') fiscal_partners from ( select (xpath('/tnsMessage/Body/Request/FileNumber/text()', replace(x, ':','')::xml))[1]::text file_number , unnest(xpath('/tnsMessage/Body/Request/FiscalHouseHolds/FiscalHouseHold', replace(x, ':','')::xml))::text fiscal_household from xml_test ) temp ; 它给了我正确的结果,就是这些。 文件编号 好处 财政合作伙伴 9913894 66090999038 65120999956 9913894 66090999038 65120999956 - 94013099924 您可以看到我必须经历一个中间步骤并执行两次 SELECT。是否可以取消这个中间步骤?和/或优化这个查询? 感谢所有的灵感。 将财政家庭提取为笛卡尔积(即无约束连接)子查询。这实际上充当行级函数,将表达式附加到源输出。 请注意,我添加了一个新的第三个受益人以及新的fiscal_partners,以证明参照完整性得到了维护。 with xml_test as ( select '<!--Build-Version: 1.564-REVb37dd024a8-20220530T1418--><tns:Message xsi:schemaLocation="https://appprod.be/Trivia/documents/Docs/XSDs/v1/T013 T013_v1.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="https://appprod.be/Trivia/documents/Docs/XSDs/v1/T013"> <Header> <Agent>90015299</Agent> <SocialFund>299</SocialFund> <MessageId>T013</MessageId> <Timestamp RequestDate="2022-06-16T23:20:00" ProcessDate="2022-06-16T23:25:20" ResponseDate="2022-06-16T23:25:20"/> <Reference NRK="6e6806740a6ea06d7ca6ae7b31edeb8e" Requestor="90010299"/> <Result>OK</Result> <ReturnCode>ResponseOnly</ReturnCode> </Header> <Body> <Request> <TransmissionMethod>BULK</TransmissionMethod> <SocialFundCode>299</SocialFundCode> <FileNumber>9913894</FileNumber> <FiscalYear>2020</FiscalYear> <FiscalHouseHolds> <FiscalHouseHold> <Beneficiary>66090999038</Beneficiary> <FiscalPartners> <FiscalPartner>65120999956</FiscalPartner> </FiscalPartners> </FiscalHouseHold> <FiscalHouseHold> <Beneficiary>66090999038</Beneficiary> <FiscalPartners> <FiscalPartner>65120999956</FiscalPartner> <FiscalPartner>94013099924</FiscalPartner> </FiscalPartners> </FiscalHouseHold> <FiscalHouseHold> <Beneficiary>66090999040</Beneficiary> <FiscalPartners> <FiscalPartner>65120990056</FiscalPartner> <FiscalPartner>94013000924</FiscalPartner> </FiscalPartners> </FiscalHouseHold> </FiscalHouseHolds> </Request> </Body> </tns:Message>' as x ) SELECT (xpath('/tnsMessage/Body/Request/FileNumber/text()', replace(x, ':','')::xml))[1]::text file_number , (xpath('//Beneficiary/text()', fiscal_household::xml))[1]::text AS benef , array_to_string( (xpath('//FiscalPartner/text()', fiscal_household::xml)), ' - ') fiscal_partners FROM xml_test, (SELECT unnest(xpath('/tnsMessage/Body/Request/FiscalHouseHolds/FiscalHouseHold', replace(x, ':','')::xml))::text AS fiscal_household FROM xml_test) A ; 产量 文件编号 好处 财政合作伙伴 9913894 66090999038 65120999956 9913894 66090999038 65120999956 - 94013099924 9913894 66090999040 65120990056 - 94013000924 需要注意的是,仅仅因为 2 阶段查询与 3 阶段查询在语法上可能更清晰,查询优化器最终可能仍会构建相同的计划。

回答 1 投票 0

我收到此警告“XMLObject 类型的 getAttribute(String) 方法已弃用”,setAttribute 也同样

不推荐使用 XMLObject 类型中的 getAttribute(string) 方法,并且不推荐使用 XMLObject 类型中的 setAttribute(string,String) 方法,请给我 getAttribute 和

回答 1 投票 0

如何在Python中更新/修改XML文件?

我有一个 XML 文档,我想在它包含数据后对其进行更新。 我考虑过以“a”(追加)模式打开 XML 文件。问题是新的数据会被写入...

回答 9 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.