xml-parsing 相关问题

XML解析器遍历包含XML树的文本文档,并允许使用层次结构中的信息。将此标记用于实现XML解析器的问题,或者通过使用给定语言的现有解析器生成的问题。

这个字符是什么意思以及如何解码这些类型的字符?

我收到一个带有一些特殊字符的 xml,例如这些 Pre‿charged ‿,当我解析此数据时,我无法解析。在我的 xml 中,我正在获取 Prex**E2x80?**已充电或已预充电...

回答 0 投票 0

How to add custom String to List<String> jaxb xml adapter to an xsd generated class attribute

我们长期以来一直在使用 jaxb 将 XML 解组为我们可以在我们的系统中使用的 POJO。但是,直到最近我才发现 jaxb 如何解析 xml 提供的数据的问题,我...

回答 0 投票 0

如何访问作为芭蕾舞演员关键字的 xml 元素的属性?

考虑下面用芭蕾舞演员编写的代码段。 xml xmlHello = xml Hello; string id = 检查 xmlHello.id; io:println(id); 在上面的场景中......

回答 1 投票 0

使用 xsl 转换将 `&` 转换为 `&` 但抛出错误“et.sf.saxon.event.NoOpenStartTagException:”

我们正在使用 XSL 转换器将十六进制代码实体转换为 mdash。这种转变按预期发生。 但是我们还要将xml中的所有&都转换为&输出。 现在,输出

回答 1 投票 0

解析 xsl 错误 - javax.xml.transform.TransformerException: use-character-maps attribute is not allowed on the xsl:output element

在 Java 中使用 XML 序列化器解析其中一个 XML 文件时,HTML 实体被转换为相应的十六进制代码值(例如 mdash 输出为“十六进制值-#x2014;”)...

回答 0 投票 0

apex_data_parser.parse 的 p_row_selector 值应该是多少?

我正在尝试解析 APEX18 上的 XML 文件 XML结构是这样的: x 2023-05-0...

回答 0 投票 0

xml.etree 获取具有特定属性的孩子的标签

我有以下xml文件: 我有以下 xml 文件: <node id="1416646243" /> <node id="1416646244"> <tag k="crossing" v="unregulated" /> </node> <node id="1416646245"> <tag k="crossing" v="traffic_signals" /> </node> 我想选择 <node> 标签,其中包含一个 <tag> 标签与属性 v="traffic_signals". 但是,如果我使用以下代码,我会得到 <tag> 标签作为回报。 root.find('.//node/tag[@v="traffic_signals"]') 据我所知,xml.etree 没有提供获得父母的方法。 我怎样才能真正获得node标签? 效率不高 - 但它有效 import xml.etree.ElementTree as ET xml = '''<r> <node id="1416646243" /> <node id="1416646244"> <tag k="crossing" v="unregulated" /> </node> <node id="1416646245"> <tag k="crossing" v="traffic_signals" /> </node> </r>''' root = ET.fromstring(xml) node = [n for n in root.findall('.node') if n.find('tag[@v="traffic_signals"]') is not None][0] print(node.attrib) 输出 {'id': '1416646245'} 这是您的解决方案,您可以检查“//parent[./direct_child]”或“//parent[.//children_of_child]”中带有子元素的元素结果元素将是父元素 root.find('.//node[./tag[@v="traffic_signals"]]') 有点hacky,但是您可以在匹配孩子后使用..返回到父母。 root.find('.//node/tag[@v="traffic_signals"]/..')

回答 3 投票 0

获取 soapenv 响应并将其解析为 php 对象,然后从对象访问所有和每个数据

使用 soapUI 我从 wsdl url 得到响应,我得到 soap 响应一切正常,现在我需要使用网站上的数据所以我可以将用户输入的数据与我得到的响应进行比较,我...

回答 0 投票 0

soap xml 到 JS 变量

与邮递员一起,我从 wsdl url 得到响应,我得到的 soap 响应都很好,现在我需要使用网站上的数据,这样我就可以将用户输入的数据与我得到的响应进行比较,我。 ..

回答 0 投票 0

无法将变量传递给 SQL 中的 xml.Nodes() 中的 sql:variable() 函数

我正在尝试将一个值传递给 xml.nodes 以便我可以泛化: 声明@xml xml = ' 这是一个值 我正在尝试将一个值传递给 xml.nodes 以便我可以泛化: DECLARE @xml xml = ' <root> <level1> <sublevel1> <val>this is a value</val> <val>this is also a value</val> </sublevel1> </level1> </root> ' declare @xmlPath nvarchar(250) = '/root/level1/sublevel1' Select @xmlPath as [path], t.c.query('.') as data from @xml.nodes ('/root/level1/sublevel1') as t(c) --this line find the nodes --from @xml.nodes ('*[local-name()=sql:variable("@xmlPath")]') as t(c) --This one doesn't 当我尝试传入变量.Nodes(@xmlPath) 或连接路径并且 Nodes() 函数需要字符串文字时,我得到了这个可能的解决方案。 预期结果: <sublevel1> <val>this is a value</val> <val>this is also a value</val> </sublevel1> 我没有收到任何错误,但是当我运行它时也没有返回任何数据。

回答 0 投票 0

RegEx 有没有一种方法可以在不进入下一个相同标签的情况下捕获 XML 标签中相同的 N 组?

我有一个看起来像这样的 XML 文件: 71 “预期的句子” 我有一个看起来像这样的 XML 文件: <Table> <Persons> <Person> <ID>71</ID> <FullNameLikeX>"sentence expected"</FullNameLikeX> <Age>49</Age> <FavoriteFood>Banana</FavoriteFood> <NameParts> <word>Jhon</word> <word>Henry</word> <word>Abbot</word> </NameParts> </Person> <Person> <ID>72</ID> <FullNameLikeX>"sentence expected"</FullNameLikeX> <Age>26</Age> <FavoriteFood>Cake</FavoriteFood> <NameParts> <word>Cecilia</word> <word>Elisabeth</word> <word>Maria</word> <word>Smith</word> </NameParts> </Person> <Person> <ID>73</ID> <FullNameLikeX>"sentence expected"</FullNameLikeX> <Age>17</Age> <FavoriteFood>Lasagna</FavoriteFood> <NameParts> <word>Luc</word> <word>Hernandez</word> </NameParts> </Person> </Persons> </Table> 我试图用文本编辑器 (Notepad++) 中的正则表达式用实际句子替换“预期句子”部分(对于这里给出的第一个人:“Jhon Henry Abbot like Banana”)。 我的问题是我无法找到一种方法来处理“NameParts”标签中不同数量的“word”标签,而不会导致一个组最终过度进入下一个“Person”标签或该组为空。 想出了这个正则表达式: (<FullNameLikeX>")[\s\S]*?("<\/FullNameLikeX>)([\s\S]*?<FavoriteFood>([\s\S]*?)<\/FavoriteFood>[\s\S]*?<NameParts>###[\s\S]*?<\/NameParts>) 我已经尝试放置多个(从 1 到 4)而不是###: (?:[\s\S]*?<word>([\s\S]*?)<\/word>)? 但是当单词少于这个组数时,组最终会进入下一个人。 (?:[\s\S]*?<word>([\s\S]*?)<\/word>)?? 它没有到达下一个人,但没有人正在寻找。 (?:[\s\S]*?<word>([\s\S]*?)<\/word>)+?当字数少于此组数时,组最终会进入下一个人。 (?:[\s\S]*?<word>([\s\S]*?)<\/word>(?![\s\S]*?<\/Person>[\s\S]*?))?它没有到达下一个人,但捕获组不知何故是空的。 所以基本上有些小组总是要么尝试获得 1 次迭代,即使他们不应该这样做,但最终会过度进入下一个 Person 标签,或者他们在应该获得 1 次时获得 0 次迭代。 有没有一种方法可以捕获不同数量的 XML 标签值,而无需仅使用正则表达式进入另一个标签,或者这是不可能的? ps:这个 XML 文件看起来很像,实际文件更长,标签名称和值被遮盖了,为了阅读清晰,我用简单的标签名称和值替换了标签名称和值,但文件的格式保持不变相同。(如果它确实有帮助的话,它似乎没有少于 1 个“单词”标签,每个“NameParts”标签不超过 5 个)。

回答 0 投票 0

Powershell 中的 XML 解析器并在验证后移动文件

以下脚本已经运行良好。我可以根据 xsd 文件验证给定的 xml 文件并记录所有验证错误。 我的问题是,如果没有验证错误,我想移动 xml 文件

回答 0 投票 0

我的 XML 使用来自 accellera 的命名空间验证失败

这是我尝试使用此 python 包 (https://pypi.org/project/ipxact2systemverilog/) 转换为降价文件的 xml 这是我尝试使用此 python 包将 xml 转换为降价文件 (https://pypi.org/project/ipxact2systemverilog/) <?xml version="1.0" encoding="UTF-8"?> <!--Generated by PeakRDL IP-XACT (https://github.com/SystemRDL/PeakRDL-ipxact)--> <ipxact:component xmlns:ipxact="http://www.accellera.org/XMLSchema/IPXACT/1685-2014" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.accellera.org/XMLSchema/IPXACT/1685-2014 http://www.accellera.org/XMLSchema/IPXACT/1685-2014/index.xsd"> <!--There are unimportant meat filler items in here but I have left them out for simplification--> </ipxact:component> 当我运行命令时: python ./vcg-env/bin/ipxact2md --use-schemaloc -s $gitroot/output-files/ip_xact_test.xml -d $gitroot/output-files/registers_markdown.md 这是我得到的错误: `ip_xact_test.xml:3:0:ERROR:SCHEMASV:SCHEMAV_CVC_ELT_1: 元素'{http://www.accellera.org/XMLSchema/IPXACT/1685-2014}component':验证根没有匹配的全局声明。 即使我去掉 xml 中间的几百行实际上只有一个 ipxact:component 元素,我仍然得到同样的错误。 我试过只有一个组件元素,然后把所有的“肉”都挑出来,只是为了确认“组件”是我的问题。它仍然得到同样的错误。

回答 0 投票 0

XML : lxml.etree - findall() when document element has attributes

.findall() 在文档元素具有属性时找不到任何内容。为什么会出现这种行为以及如何解决? 这是代码: 从 lxml 导入 etree as et 文本 = '''\ .findall() 当文档元素具有属性时找不到任何内容。为什么会出现这种行为以及如何解决? 代码如下: from lxml import etree as et text = '''\ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">\ <text class="what1 y2">abc</text><text class="what17 x1">nbc</text>\ <text class="f18 sf4 f12" textLength="72.18">ID_NUM.47</text></svg>''' tree = et.fromstring(text) for elem in tree.findall(".//text"): if elem.text == "ID_NUM.47": elem.getparent().remove(elem) print(et.tostring(tree)) tree.findall(".//text") 返回一个空列表。 但是对于以下文档,其中删除了svg标签属性,找到了所有元素: text = '''\ <svg><text class="what1 y2">abc</text><text class="what17 x1">nbc</text>\ <text class="f18 sf4 f12" textLength="72.18">ID_NUM.47</text></svg>''' 此外,例如,当用 .findall() 替换 .xpath('//*[attribute::textLength]') 时,所有元素都在两个文档中找到。

回答 0 投票 0

为什么结束 xml 标签没有正确解析?

我正在尝试解析的文本行,这是 .txt 文件中的一行: 118.38 美元Takis Fuego,1 盎司(46 包) 我正在尝试解析的文本行,这是 .txt 文件中的一行: <Index>1</Index><Price>$18.38</Price><Product>Takis Fuego, 1 Ounce (46 Pack)</Product><SoldBy> Sam's Club</SoldBy><href>https://www.google.com/shopping/product/14559077146163012667?hl=en&sxsrf=ALiCzsb1Gfl32-pXt32h0QkkE-T57FtdxA:1670964406762&psb=1&q=takis&prds=eto:15330784880350744537_0,pid:15387764403936018691,rsk:PC_15179594788466925291&sa=X&ved=0ahUKEwjPgJuOvsj-AhUJGlkFHSQsBpcQ8gIIpgooAA</href> (我正在专门查看价格 xml 标签) 这里是负责提取价格的代码: price = fileLines.get(i).substring(fileLines.indexOf("<Price>") + "<Price>".length(),fileLines.indexOf("</Price>"));` 这里是被解析行的格式: String str = "<Index>" + resultNum + "</Index>" + "<Price>" + Price + "</Price>" + "<Product>" + Product + "</Product>" + "<SoldBy> " + Company + "</SoldBy>" + "<href>" + link + "</href>"; 代表我正在看的产品。 Here is the stack trace for this line: java.lang.StringIndexOutOfBoundsException: begin 6, end -1, length 371 at java.base/java.lang.String.checkBoundsBeginEnd(String.java:4601) at java.base/java.lang.String.substring(String.java:2704) at SeerWebCrawler.buildGUIFile(SeerWebCrawler.java:134) at SeerWebCrawler.main(SeerWebCrawler.java:58) 我已将其缩小到认为 </Price><Product> 导致错误但我不确定。任何帮助将不胜感激。 我试过弄乱语法,但我给了我同样的错误。

回答 0 投票 0

在 Net Core 中为 XML 添加不同的 Namespace 前缀和属性

我想将多个名称空间前缀和属性添加到 Net6 Core API 中的现有 XML。 我有以下内容: 我想将多个名称空间前缀和属性添加到 Net6 Core API 中的现有 XML。 我有以下内容: <?xml version="1.0" encoding="UTF-8"?> <note xmlns="http://test.co.uk" xmlns:temp="http://tes007.co.uk" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Header> <Title>Hello</Title> </Header> <PutData> <Credentials> <Username>Test</Username> <Password>1234</Password> </Credentials> <Payload> <Filename>test.xml</Filename> <FileType>Xml</FileType> </Payload> <message> <title>Title1</title> <body></body> </message> </PutData> </note> 我想要实现的是: <?xml version="1.0" encoding="UTF-8"?> <note xmlns="http://test.co.uk" xmlns:temp="http://tes007.co.uk" xmlns:xsi="http://test0010.com.br"> <xsi:Header> <Title>Hello</Title> </xsi:Header> <temp:PutData> <Credentials> <Username>Test</Username> <Password>1234</Password> </Credentials> <Payload> <Filename>test.xml</Filename> <FileType>Xml</FileType> </Payload> <message Type="TEST007"> <title>Title1</title> <body></body> </message> </temp:PutData> </note> 我试过类似的东西: XmlDocument doc = XmlDocument.LoadXml(xml); var xPath = "//*" //all nodes foreach(XmlElement node in doc.SelectNodes(xPath)) { if(node.Name == "Header") { node.Prefix = "xsi"; node.RemoveAttribute("xmlns"); } if(node.Name == "PutData") { node.Prefix = "temp"; node.RemoveAttribute("xmlns"); } } 以上内容部分适用于前缀。 我知道我们有类似的问题,但没有一个对我有用。感谢您的帮助,谢谢。 以下 XSLT 3.0 转换更改了 PutData 元素的名称空间并保持其他一切不变: <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="3.0"> <xsl:mode on-no-match="shallow-copy"/> <xsl:template match="*:PutData"> <xsl:element name="temp:PutData" namespace="http://tes007.co.uk"> <xsl:apply-templates/> </xsl:element> </xsl:template> </xsl:transform> 如果您更喜欢使用 Microsoft 提供的工具,也可以使用 XSLT 1.0 来完成。 正如评论者指出的那样,.NET 中的System.Xml API 不能做你想做的事,你必须使用System.Xml.Linq API(XDocument,XElement 等): var xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> <note xmlns=\"http://test.co.uk\" xmlns:temp=\"http://tes007.co.uk\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"> <Header> <Title>Hello</Title> </Header> <PutData> <Credentials> <Username>Test</Username> <Password>1234</Password> </Credentials> <Payload> <Filename>test.xml</Filename> <FileType>Xml</FileType> </Payload> <message> <title>Title1</title> <body></body> </message> </PutData> </note>"; var xdoc = XDocument.Parse(xml); var xdocAttributes = xdoc.Root.Attributes(); var xsiNs = xdocAttributes.First(n => n.Name.LocalName == "xsi"); var tempNs = xdocAttributes.First(n => n.Name.LocalName == "temp"); xsiNs.Value = "http://test0010.com.br"; var header = xdoc.Descendants().First(d => d.Name.LocalName == "Header"); header.Name = XName.Get("Header", xsiNs.Value); var putData = xdoc.Descendants().First(d => d.Name.LocalName == "PutData"); putData.Name = XName.Get("PutData", tempNs.Value); var message = xdoc.Descendants().First(m => m.Name.LocalName == "message"); message.Add(new XAttribute("Type", "TEST007")); 使用xdoc.ToString()会给你: <note xmlns="http://test.co.uk" xmlns:temp="http://tes007.co.uk" xmlns:xsi="http://test0010.com.br"> <xsi:Header> <Title>Hello</Title> </xsi:Header> <temp:PutData> <Credentials> <Username>Test</Username> <Password>1234</Password> </Credentials> <Payload> <Filename>test.xml</Filename> <FileType>Xml</FileType> </Payload> <message Type="TEST007"> <title>Title1</title> <body></body> </message> </temp:PutData> </note>

回答 2 投票 0

Android XML 解析器导致异常 java.lang.AssertionError

Android xml 解析器抛出异常 java.lang.AssertionError:错误。我怀疑以下是来自 com.android.org.kxml2.io.KXmlParser 包的代码,它抛出了这个错误。 链接到...

回答 1 投票 0

在 Powershell 中解析 XML 并获取所有 xsd 验证错误

我的目标是在 powershell 5.1 中针对 xsd 架构文件验证 xml。到目前为止,我得到了以下代码。实际上它有效并告诉我错误。但问题是,只有第一个验证...

回答 1 投票 0

尝试使用 XML、xmlParse 读取 URL 时代码出错

我必须阅读以下链接并在代码后回答以下问题 http://www.ggobi.org/book/data/australian-crabs.xml 库(XML) 螃蟹<- xmlParse('http://www.ggobi.org/book/data/

回答 1 投票 0

解析特定的 XML 标签值

我有一个 SQLite 3.38.2 表,其中一列有 XML 标签: 与 cte(xml_tag) as (values (' 我有一个 SQLite 3.38.2 表,其中一列有 XML 标签: with cte(xml_tag) as (values ('<Event time="Sat Apr 22 1:01:51.887" type="Debug" thread="2164: Main CIM worker thread" elapsed="1" function="Geodatabase.Cursor" code="EndCursor">'), ('<Event time="Sat Apr 22 1:01:51.883" type="Debug" thread="2164: Main CIM worker thread" elapsed="23" function="Geodatabase.Cursor" code="EndCursor">'), ('<Event time="Sat Apr 22 1:01:51.874" type="Debug" thread="2164: Main CIM worker thread" elapsed="456" function="Geodatabase.Cursor" code="EndCursor">'), ('<Event time="Sat Apr 22 1:01:51.846" type="Debug" thread="2164: Main CIM worker thread" elapsed="7890" function="Geodatabase.Cursor" code="EndCursor">')) select * from cte db<>小提琴 我想从elapsed标签中提取值作为数字: elapsed ------- 1 23 456 7890 如何使用 SQL 查询从该 XML 标记中提取值? 假设所有xml_tag的值都包含子字符串'elapsed='(只有一次)你可以使用字符串函数: SELECT SUBSTR(xml_tag, INSTR(xml_tag, 'elapsed=') + LENGTH('elapsed=') + 1) + 0 AS elapsed FROM cte; 通过将0添加到提取的字符串中,它被隐式转换为数字。 查看演示。

回答 1 投票 0

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