在 PHP 中,是否存在通过节点名称(递归)获取一个或多个子元素的现有方法,或者您是否必须自己编写一个函数?
例如,这是我的 XML:
<parent>
<child>
<grandchild>Jan</grandchild>
<grandchild>Kees</grandchild>
</child>
</parent>
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种返回如下内容的方法: Array( [0] => 'Jan', [1] => 'Kees' )
通过调用类似的东西:
$grandchildren = $xml->children('grandchild');
Run Code Online (Sandbox Code Playgroud)
根据文档,上述内容确实存在,但仅适用于名称空间。
e:下面接受的答案有效。这是我跑来测试它的。
$xml = '
<parent>
<child>
<grandchild>Jan</grandchild>
<grandchild>Kees</grandchild>
</child>
</parent>';
$L_o_xml = new SimpleXMLElement($xml);
$L_o_child = $L_o_xml->xpath('//grandchild');
foreach( $L_o_child as $hi ){
print "\n".(string)$hi;
}
Run Code Online (Sandbox Code Playgroud)
简单打印:
Jan
Kees
Run Code Online (Sandbox Code Playgroud) 为什么if块中的代码以任何方式执行?
switch(v)
{
case a:
break;
...
if(condition)
{
case f:
...
break;
case g:
...
break;
}
...
case z:
...
break;
default:
}
Run Code Online (Sandbox Code Playgroud) 有没有办法以编程方式创建<DIV>以获取属性innerHtml?
HtmlGenericControl div = new HtmlGenericControl("div");
Run Code Online (Sandbox Code Playgroud)
我怎么能得到div.innerHTML?
这是我的代码,
Name obj = new Name();
obj = DB.Names.Where(x => x.age == 20 ).SingleOrDefault();
Run Code Online (Sandbox Code Playgroud)
我想要做的就是更新所有的Name用age=20,
obj.Name = " Mr " + obj.Name ;
DB.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)
但是.SingleOrDefault()只能返回一个值,我想全力以赴age=20.
我正在使用HtmlAgilityPack抓取一些数据.
HTML看起来像这样:
<div id="id-here">
<dl>
<dt> Field Name </dt>
<dd> Value for above field name </dd>
<dt> Field Name </dt>
<dd> Value for above field name </dd>
<dt> Field Name </dt>
<dd> Value for above field name </dd>
</dl>
</div>
Run Code Online (Sandbox Code Playgroud)
现在我遇到的问题是,并不总是有一定数量的字段,所以我无法可靠地访问它们,如:
//*[@id="id-here"]/dl[1]/dd[1]
Run Code Online (Sandbox Code Playgroud)
因为dd [1]可能是一个页面上的名称和另一个用户未能填写名称的电话,因此隐藏了字段.
所以我抓住所有的DT和DD节点,如下所示:
//*[@id="id-here"]/dl[1]/dt | //*[@id="id-here"]/dl[1]/dd
Run Code Online (Sandbox Code Playgroud)
现在我检查每个节点以查看它是否与我想要的字段匹配,并采用NextSibling值,如下所示:
foreach (HtmlNode node in details)
{
if (node.InnerText.Contains("Tel:")) telephone = node.NextSibling.InnerText;
if (node.InnerText.Contains("Email:")) email = node.NextSibling.InnerText;
}
Run Code Online (Sandbox Code Playgroud)
这适用于电话,但出于某种原因,当"Email:"节点出现时,两个NextSibling.InnerHTML&NextSibling.InnerText都是空白的,尽管下一个兄弟肯定有数据.如果我真的去那个node在details看它的InnerHTML是整个格式化链接和InnerText是电子邮件地址.
是 …
我有一个div,这个div可以(或不能)将html元素作为子元素.使用我的javascript,我需要找到此div中所有出现的单词,除了<a>标签中的那些单词.
例如:
<div id="dictionable">
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
<br/><br/>
<a href="#lorem">lorem</a>
<br/><br/>
<p>lorem</p>
</div>
Run Code Online (Sandbox Code Playgroud)
我尝试使用我的超低功能构建一个正则表达式,失败了.所以我用Google搜索并发现了这个:
var pattern = new RegExp('(lorem)(?![^<]*>|[^<>]*</)', 'gim');
Run Code Online (Sandbox Code Playgroud)
这个正则表达式发现每次出现"lorem"但不是每个标签.我只需要排除A标签.
谁能帮助我?
谁能解释为什么
function x() {
console.log("Hello!");
}
var a = x;
a();
x();
Run Code Online (Sandbox Code Playgroud)
产生
你好!
你好!
但是这个
var a = function x() {
console.log("Hello!");
}
a();
x();
Run Code Online (Sandbox Code Playgroud)
当你尝试调用函数x时会抛出错误?第二个x函数不被视为提升函数吗?我在nodejs和浏览器中尝试了这个.
我的角度服务有问题.
我的服务有下一个代码:
app.service("Utilidades", ['$http', '$window', function ($http, $window) {
return {
Get: function (urlAbsoluta, parametros, callback) {
var Utilidades = this;
$http
.get(app.UrlBase + urlAbsoluta, parametros)
.then(function (data) {
var Datos = angular.fromJson(data);
Utilidades.GuardarToken(Datos.Token);
callback(Datos);
});
},
ObtenerMenu: function () {
var Utilidades = this;
Utilidades.Get("Administracion/Api/Usuarios/Menu", {}, function (Datos) {
Datos = angular.fromJson(Datos.data);
if (Datos.Error == "") {
return Datos.Resultado;
} else {
return "";
}
});
}
}
}]);
Run Code Online (Sandbox Code Playgroud)
然后,在我的控制器中,我有下一个代码:
app.controller('LoginCtrl', ['$scope', '$http', '$location', 'Utilidades',
function Iniciador($scope, $http, $location, …Run Code Online (Sandbox Code Playgroud) 在项目中Visual Studio 2013使用时如何反序列化对象Add Service Reference?我问是因为我有以下课程:
public class RTMImagePackage
{
private int maxImages = 15;
[DataMember(EmitDefaultValue = false)]
public int MaxImages
{
get { return this.maxImages; }
private set { this.maxImages = value; }
}
[OnDeserialized]
void OnDeserialized(StreamingContext c)
{
if (maxImages == 0)
{
maxImages = 15;
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果使用本地IIS,然后我自我主机创建一个单独的项目,并使用添加此WCF服务Add Service Reference的任何新的实例RTMImagePackage总是有一个MaxImages0值,即使我在多个地方将其设置为15,甚至里面开头用的方法OnDeserialized。
如果我加入一些断点,我可以看到该OnDeserialized方法甚至从未在 Web 服务端调用,即使我尝试使用适当的断点更新服务引用。
基本上我试图保证客户端将始终具有MaxImages当它产生的代理类设置为15 WITHOUT不必使用部分类。有没有明确的方法来做到这一点?我检查了其他答案,他们的方法是使用OnDeserializedorOnDeserializing但这似乎对我不起作用。
有小费吗?
我必须尝试将文本框中的每个输入转换为完整字节字符,请在我的代码下面找到...
\n\n static convertToFullWidth(string: any) {\n if(string){\n var listOfCharacters = '';\n for (let index = 0; index < string.length; index++) {\n var selectedElement = string[index].charCodeAt(0);\n if (0x0020 < selectedElement && selectedElement < 0x007F) {\n selectedElement = 0xFF00 + (selectedElement - 0x0020);\n }\n if (0x0020 === selectedElement) {\n selectedElement = 0x3000;\n }\n listOfCharacters += String.fromCharCode(selectedElement);\n }\n return listOfCharacters;\n }\n }\nRun Code Online (Sandbox Code Playgroud)\n\n尝试:
\n\n工作输入 -\n \xe3\x82\xa6\xe3\x83\x9e\xe3\x83\xb3\xe3\x82\xb0\xe3\x83\x8a\xe3\x82\xa4 \n不工作\n \xef\xbd \xb3\xef\xbe\x8f\xef\xbe\x9d\xef\xbd\xb8\xef\xbe\x85\xef\xbd\xb2
\n