xml-parsing 相关问题

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

使用 woodstox 和本地 dtd 验证和解析 xml

我看到了多个与使用 woodstox 和 JAXB 解析 xml 相关的问题,以使用 XMLStreamReader 解组并根据模式进行验证。尽管阅读它们并没有帮助。我需要什么...

回答 1 投票 0

使用 JAXB 的动态 XML 元素

所以让我们举一个例子,假设您有这个 XML。 4 让我们举一个例子,假设您有这个 XML。 <?xml version="1.0" encoding="UTF-8"?> <test> <KeyEvents> <num_events>4</num_events> <event_1> <distance>0.044</distance> </event_1> <event_2> <distance>0.055</distance> </event_2> <event_3> <distance>3.778</distance> </event_3> <event_4> <distance>3.822</distance> </event_4> <Summary> <total_distance>7.699</total_distance> </Summary> </KeyEvents> </test> 问题是每个 XML 文件都会不同,并且具有不同数量的 event_[x]。所以本质上可能有 4 个、300 个甚至没有。 这就是模型。 @XmlRootElement(name = "test") public class test { private int numEvents; private Event event; private Summary summary; public static class Event { private double distance; @XmlElement(name = "distance") public double getDistance() { return distance; } } public static class Summary { private double totalDistance; @XmlElement(name = "total_distance") public double getTotalDistance() { return totalDistance; } } } 最终目标是迭代所有“事件”并获取每个事件的每个距离,然后将它们打印到控制台(总会有一个摘要)。 我尝试过将事件存储为地图。示例: private Map<String, Event> events; 但我似乎无法解压和迭代所有事件。有什么帮助吗?珍惜时间。 尝试 powershell 脚本 using assembly System.Xml.Linq $filename = "c:\temp\test.xml" $doc = [System.Xml.Linq.XDocument]::Load($filename) $keyEvents = $doc.Descendants("KeyEvents")[0] $events = [System.Linq.Enumerable]::Where($keyEvents.Elements(), [Func[object,bool]]{ param($x) $x[0].Name.LocalName.StartsWith('event')}) $table = [System.Collections.ArrayList]::new() foreach($event in $events) { $newRow = [pscustomobject]@{ Name = $event.Name.LocalName Distance = $Event.Element('distance').Value } $table.Add($newRow) | Out-Null } $summary = $keyEvents.Element('Summary').Value $newRow = [pscustomobject]@{ Name = 'Summary' Distance = $summary } $table.Add($newRow) | Out-Null $table 结果 Name Distance ---- -------- event_1 0.044 event_2 0.055 event_3 3.778 event_4 3.822 Summary 7.699

回答 1 投票 0

基于组件的 XML 库

是否有一个 XML 库,我们可以将代码划分为各个组件? 最后我们构建/合并它 main.xml内容为: <

回答 1 投票 0

需要帮助将包含名称空间的 XML 解析到 Abap 内表中

我正在尝试将此 XML 文件转换为 Abap 内部表,其中根标签 包含命名空间,并且我的 STRAN xml 转换正在转储异常,而没有...

回答 1 投票 0

如何更改elementtree中多个同名元素的文本

所以我有一个 XML,其中有一行: 1.2 这行代码在我的 XML 中出现了两次。 我想更改这两行的文本,使它们都更改为: 0....

回答 1 投票 0

如何解析php中json_enocoded的url接收到的json数据

我想解析我得到的json数据,我已经做了这些类型,但是有些不同,我只是想知道如何从输出中获取单个数组或单个数组值...

回答 1 投票 0

如何加快 Android XML 解析速度?

下午好(取决于您居住的地方)! 我对 Android 开发相当陌生,目前正在致力于将功能从现有的 iOS 应用程序迁移到 Android。此功能的一部分...

回答 2 投票 0

如何使用 xml-fast-parser 提取属性

我可以从解析的 XML 中提取元素,如下所示: 从“fast-xml-parser”导入{XMLParser}; 让 xml = '轨道 1轨道 ...

回答 1 投票 0

如何通过按条件从 rss feed 中选择条目来创建新的 rss feed?

当项目的子标签具有 Research Article 标签时,我想从 rss feed 中选择条目。然后根据这个标准选择项目并进行新的费用...

回答 1 投票 0

如何更改已读入 Python 的 XML 的特定部分,然后使用此更改创建新的 XML?

所以我使用 BeautifulSoup 来读取和解析下面的 XML: 从 bs4 导入 BeautifulSoup 将 open(r"....TestXML.xml", 'r') 作为 f: 数据 = f.read() bs_data = BeautifulSoup(数据, "...

回答 1 投票 0

sql 作业中的 Xml 解析问题

我在 SQL Server 作业中执行查询时遇到错误。但如果我直接执行它,它就可以正常工作。 以用户身份执行:NT AUTHORITY\SYSTEM。 XML解析:第10行,第33个字符

回答 3 投票 0

如果在指定日期范围内,如何申请每个组并为每个列出的代码返回 1 行?

我正在尝试在代码中创建几个嵌套循环,以按 Time_Data/Time_Off/Code 进行分组。我想在输出中的 1 行上显示连续几天内的所有休假代码。任何补充...

回答 1 投票 0

我如何找出 xpath 中的属性是否包含特定列表中的任何值

我如何找出 xpath 中的属性是否包含特定列表中的任何值, 例如,在下面的情况下,我想从列表 {&quo...

回答 3 投票 0

使用 pandas read_xml 解析具有公共列名称的嵌套 XML

我有一个带有公共列名称(在本例中为名称)的嵌套 xml 文件。我需要解析此 XML 以具有不同的列。 坦美 ...

回答 1 投票 0

在 Google 表格中使用 IMPORTXML 从 Google 支持页面提取元素时遇到问题

我正在尝试使用 Google 表格中的 IMPORTXML 函数从特定的 Google 支持页面提取元素。该公式适用于其他 URL,但当我在 Google 支持上使用它时...

回答 1 投票 0

如何读写XML文件?

我必须读取和写入 XML 文件。使用 Java 读写 XML 文件的最简单方法是什么?

回答 7 投票 0

解析js对象中的数组对象到xml不起作用

嘿,我正在尝试将 javascript 对象解析为 node.js 应用程序中的 xml 字符串。我像这样使用 npm 包 json2xml json2xml(jsonObject, { 标头: true }); 我的问题是当有一个数组时

回答 5 投票 0

PHP-Laravel Amazon feed XML 解析第 1 行第 1 列发生致命错误

1.02 <AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd"> <Header> <DocumentVersion>1.02</DocumentVersion> <MerchantIdentifier>MYMERCHANT123</MerchantIdentifier> </Header> <MessageType>ProcessingReport</MessageType> <Message> <MessageID>1</MessageID> <ProcessingReport> <DocumentTransactionID>172210019669</DocumentTransactionID> <StatusCode>Complete</StatusCode> <ProcessingSummary> <MessagesProcessed>0</MessagesProcessed> <MessagesSuccessful>0</MessagesSuccessful> <MessagesWithError>1</MessagesWithError> <MessagesWithWarning>0</MessagesWithWarning> </ProcessingSummary> <Result> <MessageID>0</MessageID> <ResultCode>Error</ResultCode> <ResultMessageCode>5001</ResultMessageCode> <ResultDescription>XML Parsing Fatal Error at Line 1, Column 1: Content is not allowed in prolog. Content is not allowed in prolog.</ResultDescription> </Result> </ProcessingReport> </Message> </AmazonEnvelope> 这是我的错误,这是我的代码: $requestXml = '<?xml version="1.0" encoding="utf-8"?> <AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd"> <Header> <DocumentVersion>1.01</DocumentVersion> <MerchantIdentifier>MYMERCHANT123</MerchantIdentifier> </Header> <MessageType>Product</MessageType> <PurgeAndReplace>false</PurgeAndReplace> <Message> <MessageID>1</MessageID> <OperationType>Update</OperationType> <Product> <SKU>56789</SKU> <StandardProductID> <Type>ASIN</Type> <Value>B0EXAMPLEG</Value> </StandardProductID> <ProductTaxCode>A_GEN_NOTAX</ProductTaxCode> <DescriptionData> <Title>Example Product Title</Title> <Brand>Example Product Brand</Brand> <Description>This is an example product description.</Description> <BulletPoint>Example Bullet Point 1</BulletPoint> <BulletPoint>Example Bullet Point 2</BulletPoint> <MSRP currency="USD">25.19</MSRP> <Manufacturer>Example Product Manufacturer</Manufacturer> <ItemType>example-item-type</ItemType> </DescriptionData> <ProductData> <Health> <ProductType> <HealthMisc> <Ingredients>Example Ingredients</Ingredients> <Directions>Example Directions</Directions> </HealthMisc> </ProductType> </Health> </ProductData> </Product> </Message> </AmazonEnvelope>'; // $requestXml = trim($requestXml); // doesn't help // $requestXml = preg_replace('/[[:^print:]]/', '', $requestXml); // $requestXml = preg_replace('/^(\xEF\xBB\xBF)/', '', $requestXml); $response = Http::withHeaders([ 'Content-Type' => 'text/xml; charset=utf-8' ])->put($url, [ 'body' => $requestXml ]); 我希望有人可以帮助我,因为我快疯了,因为几天后我无法解决这个问题,但这很重要。 我尝试了在互联网上找到的所有内容,阅读了 Stackoverflow 上的所有内容,但没有解决我的问题。 我还尝试从文件中调用它(我通过 Notepad++ 将其保存为 UTF-8) $prefixAmazon = Storage::disk('amazon')->getDriver()->getAdapter()->getPathPrefix(); $requestXml = file_get_contents($prefixAmazon . 'createFeed.xml'); 我找到了使用 Amazon SP-API 在 Laravel 中创建产品源的解决方案 (https://github.com/amazon-php/sp-api-sdk): composer require amazon-php/sp-api-sdk composer require nyholm/psr7 -W use AmazonPHP\SellingPartner\AccessToken; use AmazonPHP\SellingPartner\Model\Feeds\CreateFeedDocumentSpecification; use AmazonPHP\SellingPartner\Model\Feeds\CreateFeedSpecification; use AmazonPHP\SellingPartner\Regions; use AmazonPHP\SellingPartner\SellingPartnerSDK; use App\Models\Amazon\AmazonAuth; use Exception; use GuzzleHttp\Handler\CurlFactory; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\App; use Carbon\Carbon; use Illuminate\Support\Facades\Storage; use GuzzleHttp\Client; use AmazonPHP\SellingPartner\Api\FeedsApi\FeedsSDK; use AmazonPHP\SellingPartner\Configuration; use AmazonPHP\SellingPartner\Exception\ApiException; use AmazonPHP\SellingPartner\Exception\InvalidArgumentException; use AmazonPHP\SellingPartner\HttpFactory; use AmazonPHP\SellingPartner\HttpSignatureHeaders; use AmazonPHP\SellingPartner\ObjectSerializer; use Psr\Http\Client\ClientExceptionInterface; use Psr\Http\Client\ClientInterface; use Psr\Http\Message\RequestInterface; use Psr\Log\LoggerInterface; use AmazonPHP\SellingPartner\OAuth; use Buzz\Client\Curl; use Nyholm\Psr7\Factory\Psr17Factory; use Psr\Log\NullLogger; public function getAccessToken($channelId) { $amazonAuth = AmazonAuth::where('channel_id', $channelId)->first(); //my local database channel $isExpired = Carbon::parse($amazonAuth->expires_at)->isPast(); $token = null; if ($isExpired) { $data = [ 'grant_type' => 'refresh_token', 'refresh_token' => $amazonAuth->refresh_token, 'client_id' => TenantService::getLwaClientId(), 'client_secret' => TenantService::getLwaSecret() ]; $response = Http::asForm()->post( 'https://api.amazon.com/auth/o2/token', $data ); if ($response->successful()) { $body = $response->json(); $amazonAuth->access_token = $body['access_token']; $amazonAuth->expires_at = now()->addSeconds($body['expires_in'])->toDateTimeString(); $amazonAuth->save(); $token = $body['access_token']; } else { Log::channel('amazon')->info('Amazon access token refresh failed for amazon auth id: ' . $amazonAuth->id); } } else { $token = $amazonAuth->access_token; } if ($token) { $accessToken = new AccessToken( $token, $amazonAuth->refresh_token, 'refresh_token', (int) $amazonAuth->expires_in, 'refresh_token' ); return $accessToken; } } public function createFeedTest() { $client = new Client(); $factory = new Psr17Factory(); // $httpFactory = new HttpFactory($factory, $factory); $region = 'eu'; $accessToken = $this->getAccessToken(150); $logger = new NullLogger(); $configuration = Configuration::forIAMUser( $getLwaClientId, $getLwaSecret, $getAwsAccessKey, $getAwsSecretKey, ); $sdk = SellingPartnerSDK::create($client, $factory, $factory, $configuration, $logger); $region = Regions::EUROPE; $specification = new CreateFeedDocumentSpecification; $feedDoc = $sdk->feeds()->createFeedDocument( $accessToken, $region, $specification->setContentType('text/xml; charset=utf-8') ); $feedDocID = $feedDoc['feed_document_id']; $urlFeedUpload = $feedDoc['url']; $fileContent = '<?xml version="1.0" encoding="utf-8" ?> <AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd"> <Header> <DocumentVersion>1.01</DocumentVersion> <MerchantIdentifier>MYMERCHANTTOKEN</MerchantIdentifier> </Header> <MessageType>Product</MessageType> <PurgeAndReplace>false</PurgeAndReplace> <Message> <MessageID>1</MessageID> <OperationType>Update</OperationType> <Product> <SKU>56789</SKU> <StandardProductID> <Type>ASIN</Type> <Value>B0EXAMPLEG</Value> </StandardProductID> <ProductTaxCode>A_GEN_NOTAX</ProductTaxCode> <DescriptionData> <Title>Example Product Title</Title> <Brand>Example Product Brand</Brand> <Description>This is an example product description.</Description> <BulletPoint>Example Bullet Point 1</BulletPoint> <BulletPoint>Example Bullet Point 2</BulletPoint> <MSRP currency="USD">25.19</MSRP> <Manufacturer>Example Product Manufacturer</Manufacturer> <ItemType>example-item-type</ItemType> <CountryOfOrigin>DE</CountryOfOrigin> <UnitCount>1</UnitCount> <PPUCountType>stück</PPUCountType> <IsExpirationDatedProduct>false</IsExpirationDatedProduct> </DescriptionData> <ProductData> <Health> <ProductType> <HealthMisc> <Ingredients>Example Ingredients</Ingredients> <Directions>Example Directions</Directions> </HealthMisc> </ProductType> </Health> </ProductData> <IsHeatSensitive>false</IsHeatSensitive> </Product> </Message> </AmazonEnvelope>'; dump($feedDoc); $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $urlFeedUpload); curl_setopt($curl, CURLOPT_UPLOAD, true); curl_setopt($curl, CURLOPT_PROTOCOLS, CURLPROTO_HTTPS); curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: text/xml; charset=utf-8')); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_BINARYTRANSFER, 1); curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_PUT, 1); curl_setopt($curl, CURLOPT_INFILE, fopen('data://text/plain,' . $fileContent, 'r')); curl_setopt($curl, CURLOPT_INFILESIZE, strlen($fileContent)); #Only use below option on TEST environment if you have a self-signed certificate!!! On production this can cause security issues curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); $response = curl_exec($curl); dump($response); curl_close($curl); $specificationNewFeed = new CreateFeedSpecification([ 'feed_type' => 'POST_PRODUCT_DATA', 'marketplace_ids' => ['A1PA6795UKMFR9'], 'input_feed_document_id' => $feedDocID ]); $responseFeed = $sdk->feeds()->createFeed( $accessToken, $region, $specificationNewFeed ); dd($responseFeed); }

回答 1 投票 0

Foreach 字符串参数 PHP

我像这样解析XML 2 1号楼 图片.jpg

回答 1 投票 0

Laravel:第 1 行第 1 列出现 XML 解析致命错误:序言中不允许出现内容。序言中不允许出现内容

我正在尝试使用 Laravel 在亚马逊卖家帐户中发布产品。但我收到错误: XML 解析致命错误位于第 1 行第 1 列:序言中不允许出现内容。 p 中不允许有内容...

回答 1 投票 0

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