XML解析器遍历包含XML树的文本文档,并允许使用层次结构中的信息。将此标记用于实现XML解析器的问题,或者通过使用给定语言的现有解析器生成的问题。
我有以下 XML 架构: 我有以下 XML 架构: <?xml version="1.0" encoding="utf-16"?> <xs:schema xmlns:tns="http://www.orbis-software.com/WebSvcCon" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.orbis-software.com/WebSvcCon" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="root"> <xs:complexType> <xs:sequence> <xs:element name="totalResults" type="xs:unsignedShort" /> <xs:element maxOccurs="unbounded" name="summaries"> <xs:complexType> <xs:sequence> <xs:element name="itemIdentifier"> <xs:complexType> <xs:sequence> <xs:element name="sku" type="xs:string" /> <xs:element name="id" type="xs:decimal" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="qualifier" /> <xs:element name="totalReceived" type="xs:decimal" /> <xs:element name="allocated" type="xs:decimal" /> <xs:element name="available" type="xs:decimal" /> <xs:element name="onHold" type="xs:decimal" /> <xs:element name="onHand" type="xs:decimal" /> <xs:element name="facilityId" type="xs:unsignedByte" /> </xs:sequence> <xs:attribute name="Array" type="xs:boolean" use="required" /> </xs:complexType> </xs:element> <xs:element name="_links"> <xs:complexType> <xs:sequence> <xs:element name="self"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" maxOccurs="unbounded" name="href" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="next"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" maxOccurs="unbounded" name="href" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="prev"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" maxOccurs="unbounded" name="href" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> 我正在验证的特定 XML 文档中没有“下一个”字段(尽管某些文档可以)。当我加载此文档时,我收到错误: Error validating source XML against schema - The element '_links' in namespace 'http://www.orbis-software.com/WebSvcCon' has invalid child element 'prev' in namespace 'http://www.orbis-software.com/WebSvcCon'. List of possible elements expected: 'next' in namespace 'http://www.orbis-software.com/WebSvcCon'. 根据 XSD,“下一个”元素设置为 minOccurs=0 使其成为可选,那么为什么我收到错误? 在您的架构中,_links元素的内容在中定义 <xs:element name="_links"> <xs:complexType> <xs:sequence> <xs:element name="self"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" maxOccurs="unbounded" name="href" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="next"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" maxOccurs="unbounded" name="href" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="prev"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" maxOccurs="unbounded" name="href" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> 作为三个元素的序列,即self、next和prev。这些元素都不是可选的,因为它们都没有 mixOccurs="0",每个元素的内容上只有 mixOccurs="0",因为它们可以包含 0 到无界 href 元素。 所以 <_links><self/><next/><prev/></_links> 是可能的,但你不能忽略这三个元素中的任何一个。
StaX解析:Transformer.transform方法自动移动光标,并不总是很好
我正在使用 XMLStreamReader 来实现我的目标(分割 xml 文件)。看起来不错,但仍然没有给出想要的结果。我的目标是从输入文件中分割每个节点“nextTag”: 我正在使用 XMLStreamReader 来实现我的目标(分割 xml 文件)。看起来不错,但仍然没有给出想要的结果。我的目标是从输入文件中分割每个节点“nextTag”: <?xml version="1.0" encoding="UTF-8"?> <firstTag> <nextTag>1</nextTag> <nextTag>2</nextTag> </firstTag> 结果应该是这样的: <?xml version="1.0" encoding="UTF-8"?><nextTag>1</nextTag> <?xml version="1.0" encoding="UTF-8"?><nextTag>2</nextTag> 参考使用Java分割1GB Xml文件我用这段代码实现了我的目标: import java.io.BufferedReader; import java.io.FileInputStream; import java.io.InputStream; import java.io.InputStreamReader; import java.io.StringWriter; import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLStreamReader; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.stax.StAXSource; import javax.xml.transform.stream.StreamResult; public class Demo4 { public static void main(String[] args) throws Exception { InputStream inputStream = new FileInputStream("input.xml"); BufferedReader in = new BufferedReader(new InputStreamReader(inputStream)); XMLInputFactory factory = XMLInputFactory.newInstance(); TransformerFactory tf = TransformerFactory.newInstance(); Transformer t = tf.newTransformer(); XMLStreamReader streamReader = factory.createXMLStreamReader(in); while (streamReader.hasNext()) { streamReader.next(); if (streamReader.getEventType() == XMLStreamReader.START_ELEMENT && "nextTag".equals(streamReader.getLocalName())) { StringWriter writer = new StringWriter(); t.transform(new StAXSource(streamReader), new StreamResult( writer)); String output = writer.toString(); System.out.println(output); } } } } 其实很简单。但是,我的输入文件是单行形式: <?xml version="1.0" encoding="UTF-8"?><firstTag><nextTag>1</nextTag><nextTag>2</nextTag></firstTag> 我的 Java 代码不再产生所需的输出,而只是这个结果: <?xml version="1.0" encoding="UTF-8"?><nextTag>1</nextTag> 花了几个小时后,我很确定已经找出原因了: t.transform(new StAXSource(streamReader), new StreamResult(writer)); 这是因为,执行完transform方法后,光标会自动前进到下一个事件。在代码中,我有这个分数: while (streamReader.hasNext()) { streamReader.next(); ... t.transform(new StAXSource(streamReader), new StreamResult(writer)); ... } 第一次变换后,streamReader直接获取2次next(): 1. from the transform method 2. from the next method in the while loop 因此,对于此特定行 XML,光标永远无法到达第二个打开标记。 相反,如果输入 XML 具有漂亮的打印形式,则可以从光标到达第二个,因为第一个结束标记后面有一个空格事件 不幸的是,我找不到任何如何进行设置的内容,因此变换器在执行变换方法后不会自动跳到下一个事件。这太令人沮丧了。 有人知道我该如何处理吗?在语义上也很受欢迎。非常感谢。 问候, 拉特纳 PS。我肯定可以为这个问题写一个解决方法(在转换之前漂亮地打印 xml 文档,但这意味着输入 xml 之前已被修改,这是不允许的) 正如您所阐述的,如果元素节点直接相互跟随,转换步骤是否会继续到下一个创建元素。 为了解决这个问题,您可以使用嵌套 while 循环重写代码,如下所示: while(reader.next() != XMLStreamConstants.END_DOCUMENT) { while(reader.getEventType() == XMLStreamConstants.START_ELEMENT && reader.getLocalName().equals("nextTag")) { StringWriter writer = new StringWriter(); // will transform the current node to a String, moves the cursor to the next START_ELEMENT t.transform(new StAXSource(reader), new StreamResult(writer)); System.out.println(writer.toString()); } } 如果您的 xml 文件适合内存,您可以在 JOOX 库的帮助下尝试,该库在 gradle 中导入,例如: compile 'org.jooq:joox:1.3.0' 还有主类,比如: import java.io.File; import java.io.IOException; import org.joox.JOOX; import org.joox.Match; import org.w3c.dom.Document; import org.xml.sax.SAXException; import javax.xml.parsers.DocumentBuilder; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import static org.joox.JOOX.$; public class Main { public static void main(String[] args) throws IOException, SAXException, TransformerException { DocumentBuilder builder = JOOX.builder(); Document document = builder.parse(new File(args[0])); Transformer transformer = TransformerFactory.newInstance().newTransformer(); transformer.setOutputProperty("omit-xml-declaration", "no"); final Match $m = $(document); $m.find("nextTag").forEach(tag -> { try { transformer.transform( new DOMSource(tag), new StreamResult(System.out)); System.out.println(); } catch (TransformerException e) { System.exit(1); } }); } } 它产生: <?xml version="1.0" encoding="UTF-8"?><nextTag>1</nextTag> <?xml version="1.0" encoding="UTF-8"?><nextTag>2</nextTag>
如何在 Rest API Flutter 中发布/发送 XML 数据而不是 JSON?
我想使用 Flutter 在 Rest API 中发送/发布数据。但我找不到任何关于如何使用 Flutter 发送 XML 文件的解决方案。 我需要在 post API 中发送这些数据 我想使用 Flutter 在 Rest API 中发送/发布数据。但我找不到任何关于如何使用 Flutter 发送 XML 文件的解决方案。 I need to send this data in post API <?xml version="1.0" encoding="UTF-8"?> <Request StartDate="2020-07-05" EndDate="2020-07-05" ServiceID="0"> </Request> 下面给出了我尝试使用 flutter 的代码 Future<HttpClientResponse> _send() async { var builder = new xml.XmlBuilder(); builder.processing('xml', 'version="1.0" encoding="iso-8859-9"'); builder.element('Request', nest: () { builder.attribute('StartDate', '2020-06-02'); builder.attribute('EndDate', '2020-07-02'); builder.attribute('ServiceID', '0'); }); var bookshelfXml = builder.build(); String _uriMsj = bookshelfXml.toString(); String _uri = "https://my_url"; var _responseOtp = post(_uri, _uriMsj); print("_responseOtp: $_responseOtp"); } //**POST XML:** Future<String> post(String _uri, String _message) async { HttpClient client = new HttpClient(); HttpClientRequest request = await client.postUrl(Uri.parse(_uri)); request.write(_message); HttpClientResponse response = await request.close(); StringBuffer _buffer = new StringBuffer(); await for(String a in await response.transform(utf8.decoder)) { _buffer.write(a); } print("_buffer.toString: ${_buffer.toString()}"); return _buffer.toString(); } 它返回这个响应 _responseOtp: Instance of 'Future<String>' I/flutter ( 9755): _buffer.toString: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> I/flutter ( 9755): <Response type="service-response"> I/flutter ( 9755): <ResponseCode>1020</ResponseCode> I/flutter ( 9755): <ResponseStatus>error</ResponseStatus> I/flutter ( 9755): <ResponseMessage>Requête invalide</ResponseMessage> I/flutter ( 9755): </Response> 此数据与邮递员配合得很好 您需要正常调用..只需更改标题即可。 'Content-type' : 'text/xml', 这样打电话 return await http.post( fullUrl, body:data, // data is your normal json data as a string, headers: { 'Content-type' : 'text/xml', } ); 确保使用 async 和 wait 才能正确获得结果。
我有这个 XML,我想要 csv 格式: 我正在使用 python 和 lxml.etree 库 我有这个XML,我想要一个csv格式: 我正在使用 python 和 lxml.etree 库 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RsuProtocol schemaVersion="1.11" RefSchemaFile="xxxx.xsd"> <UpdateStep> <Phase>x1Activation</Phase> <TimestampStart>1687771672000</TimestampStart> <TimestampEnd>1687771828000</TimestampEnd> </UpdateStep> <UpdateStep> <Phase>x2Execution</Phase> <TimestampStart>1687771828000</TimestampStart> <TimestampEnd>1687771907000</TimestampEnd> <Warning> <WarnCode>0x00000000</WarnCode> <Count>2</Count> <FirstOccurrence>1687771907</FirstOccurrence> <SpecificWarnCode>blablabla</SpecificWarnCode> <WarnMessage>Hello</WarnMessage> </Warning> <Warning> <WarnCode>0x11111111</WarnCode> <Count>1</Count> <FirstOccurrence>1687771907</FirstOccurrence> <SpecificWarnCode>helo</SpecificWarnCode> <WarnMessage>Hello</WarnMessage> </Warning> </UpdateStep> <UpdateStep> <Phase>x3MguCompletion</Phase> <TimestampStart>1687771907000</TimestampStart> <TimestampEnd>1687771965000</TimestampEnd> </UpdateStep> </RsuProtocol> 我想要这样的输出: "1","x1Activation","","2023-06-26 09:27:52.000000000","2023-06-26 09:30:28.000000000","","","","","" "2","x2Execution","","2023-06-26 09:30:28.000000000","2023-06-26 09:31:47.000000000","0x00000000","2","2023-06-26 09:31:47.000000000","blablabla","Hello" "3","x2Execution","","2023-06-26 09:30:28.000000000","2023-06-26 09:31:47.000000000","0x11111111","1","2023-06-26 09:31:47.000000000","helo","Hello" "4","x3Completion","","2023-06-26 09:31:47.000000000","2023-06-26 09:32:45.000000000","","","","","" 我有这样的输出: "1","x1Activation","","2023-06-26 09:27:52.000000000","2023-06-26 09:30:28.000000000","","","","","" "2","x2Execution","","2023-06-26 09:30:28.000000000","2023-06-26 09:31:47.000000000","0x00000000","2","2023-06-26 09:31:47.000000000","blablabla","Hello" "3","x3Completion","","2023-06-26 09:31:47.000000000","2023-06-26 09:32:45.000000000","","","","","" 使用我正在使用的 xslt,我仅获取 Phase= 'x2Execution' 的一行,我想获取两个“警告”信息,该阶段的每一行各一个。 这是我正在使用的xslt: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/RsuProtocol" name="FBM_UPDATE"> <xsl:for-each select="UpdateStep"> <xsl:call-template name="format-csv-field"> <xsl:with-param name="data" select="position()"/> </xsl:call-template> <xsl:call-template name="format-csv-field"> <xsl:with-param name="data" select="Phase"/> </xsl:call-template> <xsl:call-template name="format-csv-field"> <xsl:with-param name="data" select="DiagnosisAddress"/> </xsl:call-template> <xsl:call-template name="format-csv-field"> <xsl:with-param name="data"> <xsl:call-template name="get-datetime-from-timestamp"> <xsl:with-param name="timestamp"> <xsl:call-template name="convert-to-null"> <xsl:with-param name="input" select="TimestampStart"/> <xsl:with-param name="value" select="'-1'"/> </xsl:call-template> </xsl:with-param> </xsl:call-template> </xsl:with-param> </xsl:call-template> <xsl:call-template name="format-csv-field"> <xsl:with-param name="data"> <xsl:call-template name="get-datetime-from-timestamp"> <xsl:with-param name="timestamp"> <xsl:call-template name="convert-to-null"> <xsl:with-param name="input" select="TimestampEnd"/> <xsl:with-param name="value" select="'-1'"/> </xsl:call-template> </xsl:with-param> </xsl:call-template> </xsl:with-param> </xsl:call-template> <xsl:call-template name="format-csv-field"> <xsl:with-param name="data" select="Warning/WarnCode"/> </xsl:call-template> <xsl:call-template name="format-csv-field"> <xsl:with-param name="data" select="Warning/Count"/> </xsl:call-template> <xsl:call-template name="format-csv-field"> <xsl:with-param name="data"> <xsl:call-template name="get-datetime-from-timestamp"> <xsl:with-param name="timestamp"> <xsl:call-template name="convert-to-null"> <xsl:with-param name="input" select="Warning/FirstOccurrence"/> <xsl:with-param name="value" select="'-1'"/> </xsl:call-template> </xsl:with-param> </xsl:call-template> </xsl:with-param> </xsl:call-template> <xsl:call-template name="format-csv-field"> <xsl:with-param name="data" select="Warning/SpecificWarnCode"/> </xsl:call-template> <xsl:call-template name="format-csv-field"> <xsl:with-param name="data" select="Warning/WarnMessage"/> <xsl:with-param name="no-delim" select="'true'"/> </xsl:call-template> <xsl:value-of select="$new-line"/> </xsl:for-each> </xsl:template> </xsl:stylesheet> 您发布的样式表会抛出错误,因为指定的模板丢失。 不过,我认为实际问题已经足够清楚了,所以这里有一个简化的示例,您可以将其用作起点: XSLT 1.0 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text" encoding="UTF-8" /> <xsl:template match="/RsuProtocol"> <xsl:apply-templates select="UpdateStep"/> </xsl:template> <xsl:template match="UpdateStep"> <xsl:variable name="common"> <xsl:text>,</xsl:text> <xsl:value-of select="Phase"/> <xsl:text>,</xsl:text> <xsl:value-of select="TimestampStart"/> <xsl:text>,</xsl:text> <xsl:value-of select="TimestampEnd"/> <xsl:text>,</xsl:text> </xsl:variable> <xsl:choose> <xsl:when test="Warning"> <xsl:apply-templates select="Warning"> <xsl:with-param name="common" select="$common"/> </xsl:apply-templates> </xsl:when> <xsl:otherwise> <xsl:number count="UpdateStep[not(Warning)] | Warning" level="any"/> <xsl:value-of select="$common"/> <xsl:text>"","" </xsl:text> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="Warning"> <xsl:param name="common"/> <xsl:number count="UpdateStep[not(Warning)] | Warning" level="any"/> <xsl:value-of select="$common"/> <xsl:value-of select="WarnCode"/> <xsl:text>,</xsl:text> <xsl:value-of select="Count"/> <xsl:text> </xsl:text> </xsl:template> </xsl:stylesheet> 应用于您的输入 XML 示例,这将产生: 结果 1,x1Activation,1687771672000,1687771828000,"","" 2,x2Execution,1687771828000,1687771907000,0x00000000,2 3,x2Execution,1687771828000,1687771907000,0x11111111,1 4,x3MguCompletion,1687771907000,1687771965000,"","" 或者,您可以分两遍进行转换:首先,通过使每个警告成为一个完整步骤(包含父步骤中的所有数据)来“展平”输入;然后统一处理结果,为每个步骤创建一行。
我正在尝试从 xml 有效负载中提取两个节点。但它会导致一些重复值。有没有办法获得唯一的值组合或稍后删除重复值。 我...
如何解析 Snowflake 中 XML VARIANT 列中的数组?
我有一个带有 VARIANT 列的表,其中包含来自 Snowpipe 的 XML。我能够使用 XMLGET 和 GET 的奇怪组合来解析大多数字段的 XML。然而,有一个领域...
我计划编写一个脚本来更新 XML 标记值。 我的要求: 必须更改的标签值将由用户选择。有时可能不止一个。 脚本应该抛出一个
我需要根据模板将xml解析为pdf,该模板不需要再次生成战争并在我的服务器中重新部署。 我使用 JAXB 将 xml 解析为我的 java 实体,之后我想要...
我正在处理来自 Access 数据库的 XML 输出,其中某些节点内的文本需要通过 XSLT 转换为节点本身,然后通过 Adobe FrameMaker 运行到
我正在构建一个基于浏览器的TMX(翻译记忆库)编辑器。当源片段和/或目标片段包含标签时,我的内容提取脚本会中断。包含标签的源/目标字符串看起来...
我有一个 API,它返回以下 XML 响应(查看屏幕截图) 我正在使用带有 XML 的 Retrofit,检查我的依赖项: 实现 'com.squareup.retrofit2:retrofit:2.9.0' //复古...
无法在 python xml.etree.ElementTree 中找到访问 XPath 中的元素
我一直在兜圈子。我的任务是读取 xml 文档。解析记录以查找 ID。使用该 ID 执行一些 SQL。然后将 xml 的值与 SQL 的值进行比较。如果...
我有一个Python程序需要解析和处理大型XML文件,但在处理几GB大小的文件时遇到性能问题。 我目前正在使用
我有一个从 wcf 返回的 xml,我必须将其反序列化为对象。不幸的是我无法使用 wcf 数据契约,因为我的公司正在淘汰 WCF,所以这个解决方案...
如何获取列的XML值? SELECT PaymentMethodDetail.value('(/ paymentMethodDetail/EFTPaymentDetails/AccountType/text())[0]','varchar(30)') as AccounType,* FROM paymentTable <
使用 CROSS APPLY 进行 SQL Server XML 解析
我一直在研究这个 XML,它嵌套在 SQL Server 中表的一列中。 我有一个代码直到几天前才对我有用,但我目前遇到的问题是我无法解决
这里有人可以指导我如何使用 python 3.9 将此 xml 转换为 csv 吗?目前我很难解析这个 xml。 下面是我的xml结构: 这里有人可以指导我如何使用 python 3.9 将此 xml 转换为 csv 吗?目前我很难解析这个 xml。 下面是我的xml结构: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE raml SYSTEM 'raml20.dtd'> <raml version="2.0" xmlns="raml20.xsd"> <cmData type="actual"> <header> <log dateTime="2023-09-11T09:32:44.000+08:00" action="created" appInfo="ActualExporter">UIValues are used</log> </header> <managedObject class="LNCEL" version="FLF22R3_2207_10_2207_10" distName="PLMN-PLMN/MRBTS-10000/LNBTS-100007/LNCEL-10" id="10000"> <p name="mcc">100</p> <p name="mnc">20</p> <p name="name">Cell01</p> <p name="a1TimeToTriggerDeactInterMeas">320ms</p> <p name="a2RedirectQci1">disabled</p> </managedObject> </cmData> </raml> 我想要这样的输出: 先谢谢大家,期待您的意见。 这是一个如何使用 beautifulsoup 解析 XML 的示例: import pandas as pd from bs4 import BeautifulSoup with open("your_file.xml", "r") as f_in: soup = BeautifulSoup(f_in.read(), "xml") header = soup.header dt = header.log["dateTime"] all_data = [] for mo in soup.select("managedObject"): version = mo["version"] dist_name = mo["distName"] moid = mo["id"] all_data.append( { "DATETIME": dt, "VERSION": version, "DISTNAME": dist_name, "MOID": moid, **{p["name"]: p.text for p in mo.select("p") for a in p.attrs}, } ) df = pd.DataFrame(all_data) print(df) 打印: DATETIME VERSION DISTNAME MOID mcc mnc name a1TimeToTriggerDeactInterMeas a2RedirectQci1 0 2023-09-11T09:32:44.000+08:00 FLF22R3_2207_10_2207_10 PLMN-PLMN/MRBTS-10000/LNBTS-100007/LNCEL-10 10000 100 20 Cell01 320ms disabled
表 TEST_XML 中有以下 XML,其中一列“XMLTEXT”的类型为 CLOB。 我希望最后收到以下类似表格的结果: 用户身份...
cvc-complex-type.2.4.c:匹配通配符严格,但找不到元素“mvc:annotation-driven”的声明
我猜这是一个xml解析问题,但我就是看不到它在哪里。我读了一些关于这个主题的文章,但没有任何帮助: 我有这个 spring mvc 配置: 我猜这是一个 xml 解析问题,但我只是看不出它在哪里。我读了一些关于这个主题的文章,但没有任何帮助: 我有这个 spring mvc 配置: <?xml version='1.0' encoding='UTF-8' ?> <!-- was: <?xml version="1.0" encoding="UTF-8"?> --> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd" > <mvc:annotation-driven /> <context:component-scan base-package="controllers" /> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" /> </beans> 这是 tomcat 所说的: org.xml.sax.SAXParseException; lineNumber: 23; columnNumber: 30; cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'mvc:annotation-driven'. com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203) com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:134) com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:437) com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:368) com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:325) com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator$XSIErrorReporter.reportError(XMLSchemaValidator.java:458) com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.reportSchemaError(XMLSchemaValidator.java:3237) com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement(XMLSchemaValidator.java:1917) com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.emptyElement(XMLSchemaValidator.java:766) com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:356) com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2786) com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606) com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:117) com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510) com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848) com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777) com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:243) com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:348) org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:76) org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadDocument(XmlBeanDefinitionReader.java:428) org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390) org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:335) org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:303) org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180) org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:216) org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:187) org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125) org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94) org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129) org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:540) org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:454) org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:658) org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:624) org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:672) org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:543) org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:484) org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136) javax.servlet.GenericServlet.init(GenericServlet.java:158) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:526) org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078) org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:655) org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1566) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1523) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) java.lang.Thread.run(Thread.java:745) 知道我的代码可能有什么问题吗? 谢谢 如果您查看架构位置,您会注意到包含 http://www.springframework.org/schema/security 的行。 此行破坏了预期的格式,格式应为 [namespace] [xsd-location]。这行基本上搞乱了正确的格式。要解决此问题,请添加 xsd 位置或删除该行。为了防止这种情况,我通常也在 xsi:schemaLocation 属性的布局中遵循格式(如果您相应地格式化,很明显该部分丢失了).. xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"> 作为附加提示,建议使用无版本 xsd 文件,因此不要使用 spring-beans-4.0.xsd,而是使用 spring-beans.xsd。 xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 此类错误的一般答案是您需要正确检查指定的命名空间,特别是在“xsi:schemaLocation”中。 检查 xsi:schemaLocation 中是否缺少一些命名空间。这可能是解决此类错误的方法
我有这个 Python 脚本,它应该在 XML 文档中查找现有标签,并将其替换为新的、更具描述性的标签。问题是,在我运行脚本后,它似乎只能...