我有以下代码,我正在尝试获取c:CreationDate节点:
value = '<?xml version="1.0" encoding="UTF-8"?><content><c:CreationDate>2010-09-04T05:04:53Z</c:CreationDate></content>';
xml = (new DOMParser()).parseFromString(value, 'text/xml');
console.log(xml.getElementsByTagName('c:CreationDate'));
Run Code Online (Sandbox Code Playgroud)
不幸的是,它返回一个空数组,而不是一个包含xml中节点的数组.我认为这是因为":"符号引起的.
有办法逃脱吗?
注意:请不要建议使用childNodes或类似的东西.这对我来说不起作用,因为我的xml是验证复杂的(这里只是一个示例),并且将来很可能会改变,我只能依赖于标签名称.
谢谢!
我想知道使用DOM Parser和SAX Parser进行Android XML解析有什么确切的优势?
是不是DOm解析器比SAX Parser更有优势,反之亦然?
请澄清.
谢谢,
森
我正在尝试使用PHP Simple HTML Dom Parser来解析某些网站的一些信息.无所谓何在何处.但似乎它存在一些巨大的内存问题.我设法将html代码削减到只有6kB,但是找到一些元素并将它们保存到数据库的脚本甚至需要700MB的内存和超过1GB的虚拟内存!我在某处读到了我应该使用 - > clear()来释放一些内存,但似乎并非如此.
我使用将结果赋值给变量使用str_get_html()
一次和5次->find()
.
$main_html = str_get_html($main_site);
$x = $main_html->find(...);
$y = $main_html->find(...);
etc.
Run Code Online (Sandbox Code Playgroud)
我尝试使用例如$y->clear()
在使用$ y之后但是我得到一个错误,PHP Fatal error: Call to a member function clear() on a non-object
即使$y
它确实存在并且if($y)
是真的.即使是foreach($y) echo $y->plaintext
不会返回plaintext
的$y
.
来自htop:
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command
8839 username 20 0 1068M 638M 268 R 23.0 8.0 0:08.41 php myscript.php
Run Code Online (Sandbox Code Playgroud)
怎么了?
简单测试: …
我试图解析XML文件,但我在尝试构建时不断收到此错误.
这是XML文件:
<Student Data>
<Student id="11111">
<FirstName>Joe</FirstName>
<LastName>Edwards</LastName>
<Address>
<Street>345 North</Street>
<City>Brea</City>
<State>CA</State>
<Zip>99999</Zip>
<Phone>(714) 444-4444</Phone>
</Address>
<Classes>
<Class crn="5555">
<Name>CIS 100</Name>
<Units>3</Units>
<Grade>A</Grade>
</Class>
<Class crn="7777">
<Name>CIS 111</Name>
<Units>4</Units>
<Grade>B</Grade>
</Class>
</Classes>
</Student>
</Student Data>
Run Code Online (Sandbox Code Playgroud) 我有一个使用 DOMParser 解析 XML 的方法,如下所示:
this.parseXmlString = function(xmlDocStr) {
var xmlDoc;
var parser= new window.DOMParser();
xmlDoc = parser.parseFromString( xmlDocStr, "text/xml" );
// here I do some stuff with xmlDoc
return xmlDoc;
};
Run Code Online (Sandbox Code Playgroud)
问题是:当我尝试使用 Jest 进行单元测试时,此函数window.DOMParser
未定义。测试很简单:
expect(x2js.parseXmlString(xmlDocStr)).toMatchObject(expectedObject);
Run Code Online (Sandbox Code Playgroud)
有什么办法可以从 Jest 单元测试中使用 DOMParser?
// html data loaded from [http://example.org/some/path]
let htmlSource = `<!DOCTYPE html><html><head></head><body>
... <a href="relative"></a> ...
</body></html>`;
const dom = new DOMParser().parseFromString(htmlSource, 'text/html');
// this returns the value of the attribute as is
dom.links[0].getAttribute('href'); // -> "relative" / nothing new here
// this should resolve urls
dom.links[0].href // -> wait, relative to WHAT??
// if you run this code while being on [http://google.com] you'll get
dom.links[0].href // -> "https://www.google.com/relative"
// Also,
dom.location // -> null / you can't change it
dom.baseURI …
Run Code Online (Sandbox Code Playgroud) 它在XML中看起来像这样.我想得到他的Image src值......
<description><![CDATA[<div class="images"><img src="http://www.voicetv.co.th/cache/images/8a1a6f2aeb7b0e9c1d6bb3eae314165f.jpg" /></div>]]></description>
Run Code Online (Sandbox Code Playgroud)
我在做什么
if ((theElement.getElementsByTagName("description")).getLength() > 0) {
allChildern = theElement.getElementsByTagName("description").item(0).getChildNodes();
for (int index = 0; index < allChildern.getLength(); index++) {
description += allChildern.item(index).getNodeValue();
NodeList chNodes = allChildern.item(index).getChildNodes();
for (int i = 0; i < chNodes.getLength(); i++) {
String name = chNodes.item(i).getNodeName();
if(name.equals("div")) {
String clas = allChildern.item(index).getAttributes().getNamedItem("class").getNodeValue();
if(clas.equals("images")){
String nName = allChildern.item(index).getChildNodes().item(0).getNodeName();
if(nName.equals("img")) {
String nValue = allChildern.item(index).getChildNodes().item(0).getAttributes().getNamedItem("src").getNodeValue();
}
}
}
}
}
currentStory.setDescription(description);
}
Run Code Online (Sandbox Code Playgroud)
但是不行
如何<p> </p>
使用DOM或regex 删除此类型的p标记?
我想删除多个这样的p,
<p> </p>
<p> </p>
<p> </p>
Run Code Online (Sandbox Code Playgroud) 所以我想这样做.添加新的根元素并将旧元素包装在其中.
鉴于此作为起始条件
// this part uses SAXParser
org.w3c.com.Document = xmlSrc.parse(is); // *is* is InputStream
Run Code Online (Sandbox Code Playgroud)
最初的条件不是真的可以谈判,但我也愿意听到那里的评论
所以给出了这个xml文件
<?xml version="1.0" encoding="UTF-8"?>
<root1>
<elem>...</elem>
</root1>
Run Code Online (Sandbox Code Playgroud)
我需要在Java中生成一个InputStream,它将包含此格式的xml文件
<?xml version="1.0" encoding="UTF-8"?>
<newroot>
<root1>
<elem>...</elem>
</root1>
</newroot>
Run Code Online (Sandbox Code Playgroud)
存储在一些InputStream isNewXML中
我很好奇这是做什么的最好方法.我是Java新手,java有十亿种方法可以做同样的事情,所以在黑暗中这将是最好的
基本上我正在建立一个网站,它可以进行网页报废,并从大约8个不同的网站获取特定的网页来提取价格.我正在广泛使用 file_get_html()
函数PHP Simple HTML DOM Parser
来将页面源获取到字符串变量中并从中提取价格信息.
现在主要问题是页面显示来自所有不同站点的价格信息需要很长时间才能加载.
所以我的问题是
domparser ×10
xml ×4
php ×3
android ×2
java ×2
javascript ×2
saxparser ×2
dom ×1
html ×1
jestjs ×1
regex ×1
unit-testing ×1
uri ×1
url ×1
xml-parsing ×1