我多年来一直使用minidom来解析XML.现在我突然了解了Element Tree.我的问题哪个解析更好?那是:
为什么我们有两个接口?
谢谢.
我试图通过取所有" <Type>"元素来解析URL中的XML文件,其中参数type_id ="4218"??
XML文档:
<BSQCUBS Version="0.04" Date="Fri Dec 9 11:43:29 GMT 2011" MachineDate="Fri, 09 Dec 2011 11:43:29 +0000">
<Class class_id="385">
<Title>Football Matches</Title>
<Type type_id="4264" type_minbet="0.1" type_maxbet="2000.0">
...
</Type>
<Type type_id="5873" type_minbet="0" type_maxbet="0">
...
</Type>
<Type type_id="4725" type_minbet="0.1" type_maxbet="2000.0">
...
</Type>
<Type type_id="4218" type_minbet="0.1" type_maxbet="2000.0">
...
</Type>
<Type type_id="4221" type_minbet="0.1" type_maxbet="2000.0">
...
</Type>
<Type type_id="4218" type_minbet="0.1" type_maxbet="2000.0">
...
</Type>
<Type type_id="4299" type_minbet="0.1" type_maxbet="2000.0">
...
</Type>
</Class>
</BSQCUBS>
Run Code Online (Sandbox Code Playgroud)
这是我的Java代码:
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new URL("http://cubs.bluesq.com/cubs/cubs.php?action=getpage&thepage=385.xml").openStream());
doc.getDocumentElement().normalize();
NodeList nodeList …Run Code Online (Sandbox Code Playgroud) 我们对代码进行了安全审核,他们提到我们的代码容易受到外部实体(XXE)攻击.我正在使用以下代码 -
string OurOutputXMLString=
"<ce><input><transaction><length>00000</length><tran_type>Login</tran_type></transaction><user><user_id>ce_userid</user_id><subscriber_name>ce_subscribername</subscriber_name><subscriber_id>ce_subscriberid</subscriber_id><group_id>ce_groupid</group_id><permissions></permissions></user><consumer><login_details><username>UnitTester9</username><password>pDhE5AsKBHw85Sqgg6qdKQ==</password><pin>tOlkiae9epM=</pin></login_details></consumer></input></ce>"
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(OurOutputXMLString);
Run Code Online (Sandbox Code Playgroud)
在审计报告中,他们说它失败了,因为XML实体可以包含可以在预期的控制之外解析的URL.XML实体解析器将尝试解析和检索外部引用.如果可以将攻击者控制的XML提交给其中一个功能,则攻击者可以访问有关内部网络,本地文件系统或其他敏感数据的信息.为了避免这种情况,我编写了以下代码,但它不起作用.
MemoryStream stream =
new MemoryStream(System.Text.Encoding.Default.GetBytes(OurOutputXMLString));
XmlReaderSettings settings = new XmlReaderSettings();
settings.DtdProcessing = DtdProcessing.Prohibit;
settings.MaxCharactersFromEntities = 6000;
XmlReader reader = XmlReader.Create(stream, settings);
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(reader);
Run Code Online (Sandbox Code Playgroud)
但我可以在这里看到,读者没有任何值加载到xmlDoc(XmlDocument).任何人都可以帮我错过的地方吗?任何帮助表示赞赏!
我有两次,他们的价值观来自网络上的XML.
XElement xmlWdata = XElement.Parse(e.Result);
string SunRise = xmlWdata.Element("sun").Attribute("rise").Value;
string SunSet = xmlWdata.Element("sun").Attribute("set").Value;
DateTime sunrise = Convert.ToDateTime(SunRise.Remove(0,11));
DateTime sunset = Convert.ToDateTime(SunSet.Remove(0, 11));
Run Code Online (Sandbox Code Playgroud)
这给了时间:日出时间是04:28,日落时间是22:00.然后如何进行计算:
(sunrise + (sunset-sunrise)/2)
我试图使用java方法从db中获取以下xml但我收到错误
用于解析xml的代码
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
InputSource is = new InputSource(new ByteArrayInputStream(cond.getBytes()));
Document doc = db.parse(is);
Element elem = doc.getDocumentElement();
// here we expect a series of <data><name>N</name><value>V</value></data>
NodeList nodes = elem.getElementsByTagName("data");
TableID jobId = new TableID(_processInstanceId);
Job myJob = Job.queryByID(_clientContext, jobId, true);
if (nodes.getLength() == 0) {
log(Level.DEBUG, "No data found on condition XML");
}
for (int i = 0; i < nodes.getLength(); i++) {
// loop through the <data> in the XML
Element dataTags …Run Code Online (Sandbox Code Playgroud) goodreads网站有这个API用于访问用户的"货架":https://www.goodreads.com/review/list/20990068.xml? key = nGvCqaQ6tn9w4HNpW8kquw &v = 2 &shelf = toored
它返回XML.我正在尝试创建一个django项目,该项目通过此API显示书架上的书籍.我正在寻找如何(或者是否有更好的方法)来编写我的视图,以便将对象传递给我的模板.目前,这就是我正在做的事情:
import urllib2
def homepage(request):
file = urllib2.urlopen('https://www.goodreads.com/review/list/20990068.xml?key=nGvCqaQ6tn9w4HNpW8kquw&v=2&shelf=toread')
data = file.read()
file.close()
dom = parseString(data)
Run Code Online (Sandbox Code Playgroud)
如果我正确地这样做,我不完全确定如何操纵这个对象.我正在学习本教程.
我正在尝试为我的Java项目选择XML处理框架,我迷失了名字...... XOM,JDOM等.在哪里可以找到所有流行的Java XML框架的详细比较?
我正在尝试解析来自不同来源的xml文件(我无法控制).其中大多数都是用UTF-8编码的,并且使用以下代码段不会导致任何问题:
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
FeedHandler handler = new FeedHandler();
InputSource is = new InputSource(getInputStream());
parser.parse(is, handler);
Run Code Online (Sandbox Code Playgroud)
由于SAX默认为UTF-8,这很好.但是有些文件声明:
<?xml version="1.0" encoding="ISO-8859-1"?>
Run Code Online (Sandbox Code Playgroud)
即使声明ISO-8859-1 SAX仍然默认为UTF-8.只有我添加:
is.setEncoding("ISO-8859-1");
Run Code Online (Sandbox Code Playgroud)
SAX会使用正确的编码吗?
如何在没有专门设置的情况下让SAX自动检测xml声明中的正确编码?我需要这个,因为我事先不知道文件的编码是什么.
艾琳,提前谢谢
我刚刚开始阅读有关DOM的文档和示例,以便抓取和解析文档.
例如,我有部分文件如下所示:
<div id="showContent">
<table>
<tr>
<td>
Crap
</td>
</tr>
<tr>
<td width="172" valign="top"><a href="link"><img height="91" border="0" width="172" class="" src="img"></a></td>
<td width="10"> </td>
<td valign="top"><table cellspacing="0" cellpadding="0" border="0">
<tbody><tr>
<td height="30"><a class="px11" href="link">title</a><a><br>
<span class="px10"></span>
</a></td>
</tr>
<tr>
<td><img height="1" width="580" src="crap"></td>
</tr>
<tr>
<td align="right">
<a href="link"><img height="16" border="0" width="65" src="/buy"></a>
</td>
</tr>
<tr>
<td valign="top" class="px10">
<p style="width: 500px;">description.</p>
</td>
</tr>
</tbody></table></td>
</tr>
<tr>
<td>
Crap
</td>
</tr>
<tr>
<td>
Crap
</td>
</tr>
</table>
</div>
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用以下代码来获取所有tr标记并分析其中是否存在垃圾或信息:
$dom …Run Code Online (Sandbox Code Playgroud) 我正在创建一个包含多个片段的选项卡列表.我注意到,在主要活动中,我曾经setContentView获得布局xml并用于findViewById获取相应的UI元素配置.
setContentView(R.layout.fragment_tabs);
mTabHost = (TabHost)findViewById(android.R.id.tabhost);
mTabHost.setup();
mTabManager = new TabManager(this, mTabHost, android.R.id.tabcontent);
Run Code Online (Sandbox Code Playgroud)
但是,在不同的片段类中,我必须使用inflater.
View v = inflater.inflate(R.layout.webview, container, false);
WebView myBrowser=(WebView)v.findViewById(R.id.mybrowser);
Run Code Online (Sandbox Code Playgroud)
并且这两个函数都用于获取布局xml来创建一个对象,为什么会有区别?是第一个使用期间onCreate,第二个期间使用onCreateView?在什么情况下我应该选择其中之一?
layout android xml-parsing android-lifecycle layout-inflater
xml-parsing ×10
xml ×5
java ×4
c# ×2
python ×2
.net ×1
android ×1
architecture ×1
asp.net ×1
datetime ×1
django ×1
domdocument ×1
elementtree ×1
encoding ×1
html-parsing ×1
jaxb ×1
layout ×1
minidom ×1
php ×1
sax ×1
urllib2 ×1